Quais pacotes do OpenVPN o digest de auth protege?
A opção auth cobre menos do que um perfil sugere. Percorra o canal, o caso AEAD e a proteção do canal de controle antes de definir uma política de digest.
A maioria das discussões sobre digests do OpenVPN começa no pacote errado. Ler auth SHA256 como «aceite apenas pares que ofereçam SHA256» é a primeira coisa que se deve desaprender. A opção nomeia um digest para pacotes específicos, e quais são esses pacotes depende do canal e de se esse canal é AEAD. Percorra as quatro perguntas abaixo em ordem; cada uma restringe o que a definição pode significar na sua implantação.
Nomeie o canal que a definição deve proteger
OpenVPN tem um canal de controle que transporta o tráfego do aperto de mão TLS e um canal de dados que transporta a carga do túnel. O digest de auth tem papel nos dois, mas não o mesmo, e o perfil raramente torna a diferença visível. Anote qual dos dois você tenta restringir antes de tocar num arquivo de configuração.
A tabela abaixo é a versão curta de como a mesma opção cai em cada contexto.
| Context | What the auth digest does |
|---|---|
| Data channel without AEAD | Selects the HMAC digest that authenticates each data packet |
| Data channel with AEAD, such as GCM | Unused for the data channel; the cipher authenticates its own packets |
| Control channel protected by tls-auth | Selects the HMAC digest for that protection, even when data is AEAD |
Verifique se o canal de dados é AEAD antes de contar com ele
Se a cifra de dados negociada for AES-GCM ou CHACHA20-POLY1305, o canal de dados autentica a si mesmo e o digest separado não faz o trabalho que você talvez imagine. Ambos são construções AEAD, então a integridade é produzida pela mesma operação que cifra a carga. Isso não é uma degradação, mas significa que uma política justificada como «cada pacote de dados é HMAC-SHA256» é factualmente incorreta naquele túnel. Confirme o valor negociado no log do servidor ou na saída de estado do cliente antes de reescrever a política.
Inspecione a cifra que realmente foi negociada em vez da lista no perfil, porque a negociação pode cair noutro membro do conjunto. data-ciphers AES-256-GCM:AES-128-GCM é uma lista de negociação, e ambas as entradas são AEAD, então nenhuma delas consome o digest de auth para proteger a carga.
Trate a proteção do canal de controle como uma decisão própria
tls-auth acrescenta um HMAC aos pacotes do canal de controle e tira o seu digest da definição auth, por isso um túnel AEAD ainda pode ter um digest significativo configurado. tls-crypt é outro arranjo com a sua própria proteção fixa, então não assuma que herda todas as propriedades do tls-auth. Leia a documentação do mecanismo que escolheu em vez de transferir suposições entre eles.
Os dois pares também devem concordar quanto ao arranjo e quanto à direção da chave. Um digest que coincide mas um arquivo de chave usado na direção errada produz um aperto de mão que falha por razões que a definição do digest não consegue explicar.
Mantenha o auth separado da negociação de cifras e dos certificados
Três definições são constantemente confundidas: o digest de auth, a lista de cifras de dados e o algoritmo de assinatura do certificado. Mudar a primeira não reemite um certificado, não seleciona o seu digest de assinatura e não cria um método de utilizador e palavra-passe. As definições das opções de protocolo nos fontes do OpenVPN 2.6 descrevem cada uma na sua própria secção, o que é um lembrete útil de que são botões independentes.
Quando um par recusa ligar-se depois de uma mudança de digest, a causa costuma ser uma divergência numa das outras duas definições. Leia os dois extremos antes de mudar qualquer uma delas.
Escreva a política e compare-a com as configurações em execução
Uma declaração ao nível da frota deve nomear explicitamente os modos de canal de dados permitidos e a proteção do canal de controle escolhida, na mesma frase. Essa frase é verificável; «usamos SHA256» não é. Depois compare-a com os perfis efetivos de servidor e cliente em vez de com um modelo num repositório.
Termine registrando o que cada túnel realmente negociou e que mecanismo autenticou os seus pacotes. Uma linha auth visível num perfil é apenas prova da intenção de configuração, e a intenção é a parte mais barata da verificação.