Conformità FIPS per il mio progetto Android

5

Sto lavorando a un progetto relativo alla sicurezza e devo assicurarmi che sia conforme a FIPS 140-2.

Secondo la mia comprensione, la conformità FIPS è conforme sia a livello hardware che a livello software. Attualmente ci sono 2 dispositivi Android Samsung che sono conformi a FIPS, cioè hanno conformità a livello di hardware e software. Ho alcune domande.

  1. Se desidero rendere compatibile la mia app Android FIPS, se l'unico modulo crittografico utilizzato nel mio progetto è conforme, è sufficiente?

    Il modulo crittografico fornito da Android SDK è la libreria BouncyCastle e non è conforme a FIPS.

    Sto utilizzando la libreria OpenSSL compatibile con FIPS nel mio progetto come per link . Ho costruito la mia biblioteca di progetto utilizzando la libreria OpenSSL ovvero libssl.a e libcrypto.a configurate usando la modalità FIPS.

  2. Secondo il modulo FIPS OpenSSL per Android documentazione , il modulo è stato testato su diversi dispositivi Android dell'architettura armv7. Qui l'hardware Android non è conforme a FIPS?

  3. L'algoritmo AES è conforme alla FIPS. Questo significa che se utilizzo l'algoritmo AES in codice Java invece di utilizzare la libreria OpenSSL compatibile con FIPS, non è compatibile con FIPS?

    Se AES è conforme alla conformità FIPS, cosa ha a che fare con un'implementazione AES di Java o C #. Devono entrambi passare attraverso il CMVP?

posta Alok Kulkarni 14.06.2013 - 11:13
fonte

2 risposte

5

Se si desidera che il progetto sia conforme ai FIPS, sarà necessario testare l'intera soluzione per FIPS - hardware e / o software. L'utilizzo di pacchetti software conformi a FIPS semplificherà il processo anche se è necessario assicurarsi di utilizzare tale software in modo da supportare lo stato di conformità FIPS. Ad esempio, se utilizzi AES il tuo meccanismo di crittografia viene validato come valido. Tuttavia, ciò non significa che sia in atto una gestione delle chiavi adeguata, quindi è necessario considerare i livelli coinvolti nella sicurezza e conformità.

Per rispondere alle tue domande:

1) Puoi avere un'app Android utilizzando un modulo crittografico compatibile con FIPS. Ciò significa che il modulo crittografico è conforme - non significa che la tua applicazione sia conforme. L'unica rassicurazione che questo fornisce alle persone è che non stai eseguendo il rollover della tua crittografia e stai utilizzando una libreria conosciuta e riconosciuta.

2) L'hardware Android che non è FIPS avrà importanza solo se il tuo progetto richiede o meno l'hardware FIPS. Potresti semplicemente avere un software validato (FIPS Level 1)

3) È possibile scrivere l'implementazione AES utilizzando Java o OpenSSL e farlo convalidare. Solo perché stai usando l'uno o l'altro non significa che sia conforme. Dipenderà dal test eseguito dal CMVP.

Qualunque cosa tu faccia, se vuoi la conformità FIPS, hai bisogno del tuo progetto testato e validato. Non può essere compatibile con FIPS solo perché si utilizzano librerie o algoritmi di crittografia che possono essere o sono approvati per l'uso all'interno dei progetti FIPS.

    
risposta data 14.06.2013 - 13:23
fonte
10

Secondo FIPS, suppongo che intendi FIPS 140 .

FIPS 140 definisce quattro livelli di sicurezza.

  • Il livello 1 riguarda essenzialmente l'implementazione corretta della crittografia e dell'autenticazione, come nel caso del superamento di alcuni test funzionali di base. È necessario utilizzare algoritmi approvati per crittografia e generazione di numeri casuali. È possibile certificare un prodotto software al livello 1.
  • I livelli 2 e superiori comportano meccanismi di sicurezza gradualmente più forti. L'hardware deve essere incluso nella certificazione.

Non confondere FIPS 140-2 ("fips one-quaranta trattino due"), dove 2 è il numero di versione dello standard, con FIPS 140-2 livello 1 ("fips one-quaranta dash two level 1") , dove 1 è il livello di sicurezza.

A questo punto, ti verrà richiesto FIPS 140 livello 1.

Riguardo alla domanda 3: FIPS 140 richiede un'implementazione convalidata e puoi solo convalidare un'implementazione di un algoritmo approvato. AES (con una modalità adatta) è un algoritmo approvato, sta a te convalidare l'impianto. Nota che affinché il tuo software sia conforme ai FIPS, non devi solo seguire lo standard e dire che è conforme: devi passare attraverso il programma di validazione.

L'utilizzo di una libreria crittografica validata non ti aiuterà molto, tranne forse per il generatore di numeri casuali. Dovrai selezionare algoritmi approvati e comunque superare i test di comformance.

FIPS 140 livello 1 non è molto più di quello che faresti in un prodotto serio indipendentemente dalla certificazione (usa algoritmi ragionevoli, esegui alcuni test). Aggiunge due requisiti per i quali una libreria compatibile con FIPS può aiutare un po ':

  • Ogni algoritmo deve essere testato prima dell'uso, dopo ogni accensione. Test significa eseguire un vettore di prova e verificare il risultato. Il tuo software deve rifiutarsi di utilizzare l'algoritmo se il test corrispondente ha fallito.
  • Qualsiasi chiave memorizzata nel modulo deve essere cancellata dopo l'uso. Non esiste una valida convalida di sicurezza qui, ma potresti incontrare delle difficoltà se usi una lingua con un garbage collector in grado di spostare gli oggetti.

Se si utilizza una libreria conforme a FIPS, è possibile che il cliente sia soddisfatto e che non richieda la convalida del software. Devi prenderlo con il tuo cliente.

    
risposta data 14.06.2013 - 14:13
fonte

Leggi altre domande sui tag