Conformità FIPS con HMACSHA1 vs HMACSHA256 / HMACSHA512

3

La mia organizzazione ha un criterio di gruppo applicato ai server che applicano la conformità FIPS (criterio di Windows AD).

In .NET, HMACSHA1 è uno degli algoritmi di crittografia / hash conforme a FIPS. Non capisco come HMACSHA256 o HMACSHA512 non siano inclusi in questo elenco di conformità FIPS. HMACSHA1 è in qualche modo un hash più strong di HMACSHA512? Come potrebbe essere?

Elenco di conformità FIPS per .NET: link

    
posta mark 21.04.2016 - 20:29
fonte

2 risposte

6

"Conformità FIPS" riguarda più dell'algoritmo. Riguarda le implementazioni . Essere premiati con il badge "conforme" è un processo lungo, complesso e molto costoso; il suo significato concettuale è che ci sono alcuni motivi validi per credere che l'implementazione sia corretta e sicura e soddisfi una serie di proprietà di sicurezza. Dal momento che non sappiamo davvero come dimostrare che il software sia corretto in generale, la maggior parte della conformità FIPS viene effettuata attraverso audit e analisi del processo di sviluppo. Questo è piuttosto approfondito; ciò include, ad esempio, la garanzia che durante lo sviluppo sia stato utilizzato il controllo delle versioni del codice sorgente, con attribuzione appropriata di ciascuna riga di codice a uno sviluppatore correttamente identificato, per il quale sono stati eseguiti alcuni controlli in background.

In pratica, ottenere la conformità implica la produzione di un sacco di documenti (molte migliaia di pagine) e ancora più auditing, per un costo che va facilmente a $ 50000 o più, e richiede mesi. I costi crescono rapidamente con lo scopo. Apparentemente, nel 2007 (dal tuo link), Microsoft ha passato l'intera prova per HMAC / SHA-1 ma non per HMAC / SHA-256 o HMAC / SHA-512, motivo per cui il primo è "FIPS validato" ma non il quest'ultimo.

Questo potrebbe essere legato al fatto che in quel momento, .NET poteva usare l'implementazione SHA-1 dal livello Win32 (CryptoAPI), nel codice nativo, mentre SHA-256 e SHA-512 erano codice "gestito" ; fare la conformità FIPS per HMAC / SHA-256 con l'implementazione gestita ( SHA256Managed ) avrebbe gettato il runtime CLR, incluso il compilatore JIT, nell'ambito del controllo, e il prezzo sarebbe probabilmente salito alle stelle. Un'implementazione nativa di SHA-256 è stata aggiunta in .NET 3.5 ( SHA256Cng ) ma è stata rilasciata solo alla fine del 2007, troppo tardi per la conformità mostrata nella lista a cui ci si collega.

    
risposta data 21.04.2016 - 20:45
fonte
4

Ci sono due diverse nozioni di conformità qui:

  • Utilizzando un algoritmo conforme - il termine ufficiale è "Approvato". Gli algoritmi hash per HMAC sono approvati se sono elencati in FIPS 180-4 ( o versioni precedenti). SHA-1, SHA-256 e SHA-512 sono tutti algoritmi di hash sicuro approvati FIPS e la funzione HMAC basata su di essi sono quindi funzioni HMAC approvate FIPS.
  • Utilizzando un'implementazione compliante - il termine ufficiale è "validato". Per essere convalidato, un'implementazione deve essere sottoposta a un processo di certificazione in cui il codice viene testato e analizzato e il venditore del prodotto deve presentare i documenti appropriati. La parte tecnica del processo di validazione non è molto difficile a meno che tu non vada per livelli di validazione superiori a 1 (che è fondamentalmente test funzionale, cioè verificando che l'implementazione restituisca i valori corretti), ma deve essere fatta attraverso i canali formali e deve essere rifatto ogni volta che il codice cambia.

Apparentemente (non ho controllato ), in questa implementazione, solo le funzioni basate su SHA-1 sono state sottoposte al processo di test formale, pertanto l'implementazione è stata convalidata solo per tali funzioni. Questa è un'implementazione validata di HMAC-SHA-1, che è un algoritmo approvato. Gli algoritmi basati su SHA-2 sono approvati, ma questa implementazione degli algoritmi non è convalidata.

    
risposta data 21.04.2016 - 20:47
fonte

Leggi altre domande sui tag