Protegendo um validador
Cada candidato a validador é incentivado a executar suas operações de forma independente, já que configurações diversas aumentam a resiliência da rede. Os candidatos a validador devem iniciar a fase de configuração agora para estar prontos para o lançamento.
Gestão de Chaves - Carteiras de Hardware e HSM
É de importância crítica que um atacante não possa roubar a chave de um validador. Se isso for possível, todo o stake delegado ao validador comprometido fica em risco. Módulos de segurança de hardware (HSM) e carteiras de hardware são estratégias importantes para mitigar esse risco.
Requisitos de Carteira de Hardware
Carteiras de hardware (como dispositivos Ledger) fornecem armazenamento seguro de chaves onde:
- Chaves privadas são geradas e armazenadas em hardware criptografado
- Assinatura de transação ocorre dentro do dispositivo
- As chaves privadas nunca saem da carteira de hardware
- Uma frase mnemônica de 24 palavras controla o acesso a todas as chaves
Limitações Importantes
- Não é possível migrar validadores existentes: A integração de carteira de hardware só é possível ao criar novos validadores
- Backup é crítico: A perda da frase mnemônica resulta na perda permanente do controle do validador
- Armazenamento offline necessário: Armazene as frases mnemônicas com segurança offline em vários locais
Suporte a HSM
Os módulos HSM devem suportar ed25519 para CrossFi Chain. O YubiHSM2 suporta ed25519 e esta biblioteca de yubikey está disponível. O YubiHSM pode proteger uma chave privada, mas não pode garantir em um ambiente seguro que não assinará o mesmo bloco duas vezes.
Integração com Ledger
Dispositivos Ledger dão suporte a operações de validador CrossFi por meio do aplicativo Cosmos. O aplicativo Ledger pode armazenar blocos recentes e ajuda a mitigar ataques de dupla assinatura.
Operações suportadas:
- Gerenciamento de chave de conta (operações de validador, recompensas, delegação)
- Assinatura de transação com confirmação de hardware
- Verificação de endereço no dispositivo
Para instruções detalhadas de configuração, veja o Guia de Configuração da Carteira de Hardware abaixo.
Tipos de Chaves
Os validadores CrossFi usam dois tipos distintos de chaves privadas, cada uma com propósitos diferentes:
Chave de Conta (Chave do Operador do Validador)
- Propósito: Controla a conta do validador para tarefas operacionais
- Uso:
- Recebimento de recompensas de staking e comissões
- Atualização de informações do validador (descrição, taxa de comissão)
- Autodelegação e operações de desdelegação
- Votação na governança do validador
- Armazenamento: Pode ser armazenado em carteiras de hardware (Ledger) para maior segurança
- Prefixo: Usa os prefixos
mpvaloperempvaloperpub - Criação: Gerado com
crossfid keys add <name> --ledgerpara integração com carteira de hardware
Chave de Consenso (Chave Tendermint)
- Propósito: Usada por Tendermint/CometBFT para assinar blocos e votos de consenso
- Uso:
- Assinatura de propostas de bloco
- Assinatura de prevote e precommit em rondas de consenso
- Precisa ficar disponível 24/7 para produção contínua de blocos
- Armazenamento: Armazenado no arquivo
priv_validator.jsonpor padrão - Prefixo: Associado à chave pública
mpvalconspub - Segurança: Pode ser isolado usando Tendermint KMS para proteção aprimorada
- Criação: Gerado automaticamente quando o nó é inicializado com
crossfid init
Aviso Crítico de Segurança
- Nunca copie
priv_validator.jsonentre vários nós - isso causará assinaturas duplas e resultará em penalização - Não é possível migrar chaves existentes para carteiras de hardware - apenas para novos validadores
- Faça backup de ambos os tipos de chaves com segurança e separadamente
Relação entre as Chaves: Ambas as chaves são essenciais para as operações do validador, mas cumprem funções totalmente diferentes. A chave de conta gerencia a entidade do validador, enquanto a chave de consenso lida com a assinatura real de blocos.
Nós sentinela (Proteção contra DDOS)
Os validadores são responsáveis por garantir que a rede possa sustentar ataques de negação de serviço.
Uma maneira recomendada de mitigar esses riscos é que os validadores organizem cuidadosamente a topologia de rede em uma arquitetura de nó sentinela.
Os nós de validador devem conectar-se apenas a nós completos em quem confiam, pois os operam eles mesmos ou são operados por outros validadores que eles conhecem socialmente. Um nó de validador normalmente funciona em um data center. A maioria dos data centers oferece ligações diretas para as redes dos principais provedores de nuvem. O validador pode usar essas ligações para conectar-se a nós sentinela na nuvem. Essa mitigação transfere o peso de ataques de negação de serviço do nó do validador diretamente para seus nós sentinela, e pode exigir que novos nós sentinela sejam criados ou ativados para mitigar ataques aos existentes.
Topologia validador–sentinela
Este diagrama mostra uma arquitetura típica de validador–sentinela usada em redes baseadas em Tendermint. Nós sentinela públicos expõem interfaces P2P e/ou RPC para a internet e outros pares, enquanto o nó do validador fica em um segmento de rede privado ou restrito e conecta-se apenas aos seus próprios nós sentinela.
Este é um diagrama de arquitetura conceitual, não um guia de implantação. Os operadores de nó são livres para escolher sua própria infraestrutura, regras de segurança e configuração de monitoramento.
Nós sentinela podem ser rapidamente criados ou alterar seus endereços IP. Como os links para os nós sentinela estão em espaço IP privado, um ataque baseado na internet não pode perturbá-los diretamente. Isso garante que as propostas de bloco do validador e os votos sempre cheguem ao restante da rede.
Para configurar a arquitetura do seu nó sentinela, você pode seguir as instruções abaixo:
Os nós de validador devem editar o config.toml:
# Lista separada por vírgulas de nós para manter conexões persistentes
# Não inclua pares privados nesta lista se não quiser que sejam anunciados
persistent_peers =[lista de nós sentinela]
# Defina true para habilitar o reator de troca de pares
pex = false
Nós sentinela devem editar seu config.toml:
# Lista separada por vírgulas de IDs de pares para manter privados (não serão difundidos para outros peers)
# ID de Exemplo: 3e16af0cead27979e1fc3dac57d03df3c7a77acc@3.87.179.235:26656
private_peer_ids = "node_ids_of_private_peers"
Como os validadores podem se proteger de ataques de negação de serviço (DoS)?
Ataques de negação de serviço ocorrem quando um atacante envia um fluxo massivo de tráfego de internet para um endereço IP, impedindo que o servidor nesse IP se conecte à internet.
Um atacante varre a rede, tenta descobrir o endereço IP de vários nós validador e os desconecta da comunicação ao inundá-los com tráfego.
Uma maneira recomendada de mitigar esses riscos é que os validadores organizem cuidadosamente a topologia de rede usando uma arquitetura de nó sentinela.
Uma forma recomendada de mitigar esses riscos é que os validadores organizem cuidadosamente a topologia de rede em uma arquitetura de nós sentinela.
Nós sentinela podem ser rapidamente criados ou alterar seus endereços IP. Como os links para os nós sentinela estão em espaço IP privado, um ataque pela internet não pode perturbá-los diretamente. Essa estratégia aumenta muito a chance de que propostas de blocos do validador e votos tenham uma chance muito maior de chegar ao restante da rede.
Para mais detalhes sobre nós sentinela, consulte a Documentação Tendermint ou a Visão Geral da Arquitetura de Nós Sentinela no fórum.
Guia de Configuração da Carteira Ledger
Guia de Configuração da Ledger Hardware Wallet
Esta seção fornece instruções passo a passo para configurar um dispositivo Ledger para operações de validador CrossFi.
Pré-requisitos
- Dispositivo Ledger Nano S, Nano S Plus ou Nano X
- Computador com conexão USB
- Última versão do aplicativo Ledger Live
- Daemon CrossFi (
crossfid) compilado com suporte Ledger
Etapa 1: Prepare seu dispositivo Ledger
Instalar Ledger Live
- Baixe e instale o Ledger Live do site oficial:
https://www.ledger.com/ledger-live - Conecte seu dispositivo Ledger e atualize o firmware via Ledger Live para a versão mais recente.
Instalar Aplicativo Cosmos
- No Ledger Live:
- Vá para a seção Gerenciar
- Conecte e desbloqueie seu Ledger
- Procure o aplicativo "Cosmos"
- Clique em Instalar para adicionar o aplicativo Cosmos ao seu dispositivo
- Observação: pode ser necessário habilitar o Modo de Desenvolvedor nas configurações do Ledger Live se o aplicativo Cosmos não estiver visível.
Inicializar ou Restaurar Frase de Semente
- Para dispositivos novos:
- Siga as instruções de configuração do dispositivo para gerar uma nova frase de recuperação de 24 palavras
- Anote as 24 palavras na ordem exata em que forem mostradas
- Verifique a frase inserindo as palavras solicitadas
- Para dispositivos existentes:
- Use a frase de recuperação existente, se já tiver uma
- Certifique-se de ter backups offline seguros da frase
- ⚠️ Crítico: Armazene sua frase de recuperação em vários locais seguros, offline. A perda desta frase resulta na perda permanente do seu validador!
Etapa 2: Criar Conta de Validador com Ledger
Verificar Configuração do Daemon CrossFi
- Certifique-se de que o binário
crossfidfoi compilado com suporte a Ledger:crossfid version --long - A saída deve incluir suporte a Ledger nas tags de build.
Conectar e Desbloquear Ledger
- Conecte seu dispositivo Ledger ao computador e:
- Digite seu PIN para desbloquear o dispositivo
- Vá para e abra o aplicativo Cosmos
- A tela deve exibir "Cosmos pronto"
Criar Chave do Validador
- Crie uma nova chave usando o dispositivo Ledger:
crossfid keys add <validator-name> --ledger - Substitua
<validator-name>pelo identificador escolhido para o validador. - O comando irá:
- Solicitará que você confirme a operação no seu dispositivo Ledger
- Exibir o endereço do validador e a chave pública
- Armazene a referência da chave no seu keyring local
Verificar Endereço no Dispositivo
- Sempre verifique se o endereço corresponde ao que é exibido no Ledger:
crossfid keys show <validator-name> -d - Este comando irá:
- Exibir o endereço no seu terminal
- Solicitar verificação de endereço no seu dispositivo Ledger
- Exigir que confirme o endereço na tela do dispositivo
- Sempre verifique se os endereços correspondem antes de prosseguir com qualquer transação.
Etapa 3: Boas Práticas de Segurança
🔐 Segurança da Mnemonica
- Armazene frases de recuperação offline apenas
- Use vários locais seguros
- Nunca compartilhe com ninguém
- Considere soluções de backup em metal
- Teste o processo de recuperação em um dispositivo reserva
🔄 Segurança Operacional
- Sempre verifique endereços no dispositivo
- Mantenha o firmware do Ledger atualizado
- Use PIN de dispositivo único
- Habilite o tempo limite de bloqueio automático
- Monitore atualizações de firmware
Integração do Tendermint KMS
Para maior segurança da sua chave de consenso (a chave usada para assinar blocos), considere usar o Tendermint Key Management System (KMS).
O que é o Tendermint KMS?
Tendermint KMS (tmkms) é um serviço de gerenciamento de chaves que:
- Isola as chaves de consenso dos nós validador
- Previne assinatura dupla por meio de rastreamento de estado
- Suporta módulos de segurança de hardware (HSM)
- Proporciona alta disponibilidade por meio de redundância
- Roda em um servidor separado para maior segurança
Visão Geral da Configuração do KMS
Instalar Dependências
-
Instale as dependências necessárias para a compilação do KMS:
# Ubuntu/Debian
sudo apt update
sudo apt install -y gcc clang pkg-config libusb-1.0-0-dev
# Instalar Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
Instalar Tendermint KMS
-
Instale o KMS com suporte Ledger:
# Para suporte Ledger
cargo install tmkms --features=ledger
# Para suporte YubiHSM2
cargo install tmkms --features=yubihsm
# Verificar instalação
tmkms --help
Inicializar Configuração do KMS
- Crie diretório e arquivos de configuração do KMS:
tmkms init /path/to/kms/home - Isso cria:
tmkms.toml- Arquivo de configuração principalkms-identity.key- Chave de identidade KMSsecrets/- Diretório para armazenamento de chavesstate/- Diretório para estado de consenso
Configurar e Iniciar o KMS
- Edite o arquivo de configuração
tmkms.tomlpara:- Especifique o seu dispositivo de hardware (Ledger/YubiHSM)
- Configure as configurações de conexão do validador
- Configure os caminhos de derivação de chaves
- Inicie o serviço KMS:
tmkms start -c /path/to/kms/home/tmkms.toml
Configuração do Nó para KMS
Para usar o KMS com o seu nó validador CrossFi, atualize o config.toml:
# Em ~/.crossfi/config/config.toml
[priv_validator]
# Endereço TCP ou UNIX socket para o Tendermint ouvir para
# conexões de um processo PrivValidator externo
laddr = "tcp://127.0.0.1:26658"
# Caminho para o arquivo JSON contendo a chave privada a ser usada como validador
key_file = ""
# Caminho para o arquivo JSON contendo o último estado de assinatura de um validador
state_file = ""
Recursos Adicionais
Criando um Novo Validador com Carteira de Hardware
Depois de configurar sua carteira de hardware e opcionalmente configurar o KMS, siga estes passos para criar seu validador:
Financie sua Conta de Validador
-
Envie tokens XFI para o endereço da sua carteira de hardware:
# Obtenha o endereço do seu validador
crossfid keys show <validator-name> --address
# Você precisará de XFI suficiente para:
# - Delegação mínima de auto (ver requisitos atuais)
# - Taxas de transação para criação do validador
# - Custos operacionais contínuos
Sincronize seu Nó
-
Certifique-se de que seu nó validador está totalmente sincronizado antes de criar o validador:
# Verifique o status de sincronização
crossfid status | jq .SyncInfo.catching_up
# Aguarde até que catching_up mostre "false"
Criar Transação de Validador
- Crie seu validador usando a carteira de hardware:
crossfid tx staking create-validator \
--amount=<stake-amount>xfi \
--pubkey=$(crossfid tendermint show-validator) \
--moniker="<validator-name>" \
--chain-id=<chain-id> \
--commission-rate="0.05" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1000000" \
--gas="auto" \
--gas-prices="0.025xfi" \
--from=<validator-name> - ⚠️ Importante: Você precisará confirmar esta transação no seu dispositivo Ledger.
Verificar Criação do Validador
-
Verifique se o seu validador foi criado com sucesso:
crossfid query staking validators | grep -A 10 -B 10 "<validator-name>"
Verifique o status do seu validador
crossfid query staking validator $(crossfid keys show validator-name --bech val -a)
:::tip
Dica
Para maior segurança e operações automatizadas, considere configurar <PageReference href="/node-operators/setting-up-the-crossfi-chain-client/upgrade-your-node#cosmovisor-with-systemd">Cosmovisor com systemd</PageReference> para gerenciamento automático de nós e atualizações.
:::