Utilizzo di RSA-SHA come / invece di HMAC in OpenVPN?

10

Durante la lettura del manuale di OpenVPN 2.3, ho trovato l'opzione --auth alg . Il manuale dice:

Authenticate packets with HMAC using message digest algorithm alg. (The default is SHA1 ). HMAC is a commonly used message authentication algorithm (MAC) that uses a data string, a secure hash algorithm, and a key, to produce a digital signature.

Da quanto ho capito, HMAC è solo un modo preferito di creare un MAC da una funzione di hash, evitando potenzialmente le proprietà di estensione della lunghezza di alcune funzioni hash.

Quindi l'algoritmo specificato nell'opzione --auth dovrebbe essere una funzione hash.

Ora se faccio openvpn --show-digests per sapere quali algoritmi posso usare con l'opzione --auth ho anche voci come:

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

Questi sono gli algoritmi di firma digitale, perché dovrebbero essere usati nell'HMAC? Per ottenere una sorta di "doppia autenticazione"? Non è un po 'eccessivo?

O significa che in questo caso l'HMAC viene effettivamente sostituito dalla firma digitale per ottenere l'autenticazione? Se questo è il caso, cosa è meglio usare in termini di sicurezza?

    
posta NumberFour 18.06.2015 - 12:38
fonte

1 risposta

12

Guardando il codice sorgente di OpenVPN, questo sembra essere un capriccio estetico di OpenSSL.

Quando si usa --show-digests , OpenVPN chiama EVP_get_digestbynid() di OpenSSL con, come parametro, tutti gli interi da 0 a 999. Per alcuni di questi valori, EVP_get_digestbynid() restituisce un puntatore non NULL che identifica l'implementazione della funzione hash corrispondente, e quindi OpenVPN stampa il nome corrispondente.

Succede che con ID = 64, si ottiene una struttura che implementa SHA-1 e il nome corrispondente al valore ID 64 è "SHA1". Tuttavia, con ID = 65, si ottiene la stessa struttura esatta (stesso puntatore nella RAM), ovvero la stessa implementazione di SHA-1. Ma il nome corrispondente al valore ID 65 è "RSA-SHA1".

Quando si utilizza --auth , lo stesso vale: OpenVPN utilizza EVP_get_digestbyname() sulla stringa fornita. Con "SHA1", si ottiene un puntatore alla struttura che implementa SHA-1. Con "RSA-SHA1", ottieni nuovamente lo stesso identico valore del puntatore.

In altre parole, si vedono alcuni "nomi alternativi" con alcuni RSA o ECDSA ma questa è solo una conseguenza di come OpenSSL nomina i nomi, e se si usano questi nomi si ottiene semplicemente la funzione di hash sottostante (da utilizzare in HMAC) e niente di più. Pertanto, --auth SHA1 e --auth RSA-SHA1 sono completamente equivalenti.

    
risposta data 17.07.2015 - 21:24
fonte

Leggi altre domande sui tag