Questão:
Usando RSA-SHA como / em vez de HMAC no OpenVPN?
NumberFour
2015-06-18 15:38:45 UTC
view on stackexchange narkive permalink

Ao ler o manual do OpenVPN 2.3, me deparei com a opção --auth alg . O manual diz:

Autentique pacotes com HMAC usando o algoritmo de compilação de mensagem alg . (O padrão é SHA1). HMAC é um algoritmo de autenticação de mensagem (MAC) comumente usado que usa uma string de dados, um algoritmo de hash seguro e uma chave para produzir uma assinatura digital.

Pelo que entendi, HMAC é apenas uma maneira preferida de fazer um MAC a partir de uma função hash, evitando potencialmente as propriedades de extensão de comprimento de algumas funções hash.

Portanto, o algoritmo especificado na opção --auth deve ser uma função hash.

Agora, se eu fizer openvpn --show-digests para saber quais algoritmos posso usar com a opção --auth Também recebi entradas como:

RSA-SHA, DSA-SHA, ECDSA-WITH-SHA1 ... etc.

Estas são as assinaturas digitais algoritmos, por que eles devem ser usados ​​no HMAC? Para obter uma espécie de "autenticação dupla"? Não é um exagero?

Ou significa que, neste caso, o HMAC é realmente substituído pela assinatura digital para obter autenticação? Se for esse o caso, o que é melhor usar em termos de segurança?

Eu tive a mesma pergunta. Cada referência razoável que eu já vi, e meu próprio julgamento, me levam a usar --auth SHA512 ou --auth SHA256. Consulte [https://blog.g3rt.nl/openvpn-security-tips.html](https://blog.g3rt.nl/openvpn-security-tips.html) e [https: //oli.new-lan .de / 2015/02 / openvpn-crypto-tuning-tls-auth-tls-cipher-tls-version-min-dh-verify-x509-name-cipher-auth-remote-cert-tls /] (https: / /oli.new-lan.de/2015/02/openvpn-crypto-tuning-tls-auth-tls-cipher-tls-version-min-dh-verify-x509-name-cipher-auth-remote-cert-tls /) por exemplo.
Talvez você devesse oferecer uma recompensa por isso. Só posso superá-lo usando comentários (se quiser chegar a 1K).
Um responda:
Thomas Pornin
2015-07-18 00:24:34 UTC
view on stackexchange narkive permalink

Olhando para o código-fonte do OpenVPN, isso parece ser uma peculiaridade cosmética do OpenSSL.

Ao usar --show-digests , o OpenVPN chama o EVP_get_digestbynid () do OpenSSL com, como parâmetro, todos os inteiros de 0 a 999. Para alguns desses valores, EVP_get_digestbynid () retorna um ponteiro não NULL que identifica a implementação da função hash correspondente, e então o OpenVPN imprime o nome correspondente.

Acontece que com ID = 64, você obtém uma estrutura que implementa SHA-1, e o nome correspondente ao valor de ID 64 é "SHA1". No entanto, com ID = 65, você obtém exatamente a mesma estrutura (mesmo ponteiro na RAM), ou seja, a mesma implementação de SHA-1. Mas o nome correspondente ao valor de ID 65 é "RSA-SHA1".

Quando você usa --auth , o mesmo se aplica: OpenVPN usa o EVP_get_digestbyname () na string fornecida. Com "SHA1", você obtém um ponteiro para a estrutura que implementa SHA-1. Com "RSA-SHA1", você obtém novamente o mesmo valor de ponteiro.

Em outras palavras, você vê alguns "nomes alternativos" com algum RSA ou ECDSA, mas isso é apenas uma consequência de como o OpenSSL nomeia as coisas, e se você usar esses nomes, você apenas obterá a função hash subjacente (a ser usada no HMAC) e nada mais. Portanto, --auth SHA1 e --auth RSA-SHA1 são completamente equivalentes.



Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...