Recentemente mi è stato affidato un progetto di ricerca per scrivere una "applicazione di messaggistica sicura" utilizzando "protocolli approvati dal governo" (il governo è gli Stati Uniti). Prendo questo per indicare la crittografia asimmetrica e gli algoritmi crittografici approvati dal governo, AKA FIPS 140 (-1?) E hashing (FIPS 180-x).
Alcuni dispositivi Android come Galaxy S4 e HTC One sono pubblicizzati come certificati FIPS.
-
Il codice a livello di applicazione ottiene il vantaggio della certificazione implementazione su questi dispositivi? E.G., se uso lo standard API Android / Java per aprire una connessione HTTPS o generare un SHA256 hash, quelle chiamate dovrebbero essere fatte con una certificazione FIPS implementazione?
In caso affermativo:
- significherebbe che hanno sostituito il provider JCE Android predefinito, corretto?
- esiste un modo per determinare che un JCE certificato FIPS sia disponibile?
In caso contrario:
- per poter creare un'app certificabile FIPS, al minimo è necessario utilizzare JNI per chiamare una certificazione FIPS Implementazione OpenSSL o un fornitore JCE java puro alternativo, corretto? (al di fuori della creazione di un'implementazione personalizzata)
- supponendo di utilizzare un'implementazione OpenSSL certificata FIPS, ciò significherebbe che qualsiasi chiamata di rete sicura (HTTPS per esempio), dovrebbe essere eseguita nel codice nativo (C) richiamando l'implementazione OpenSSL, o utilizzare JNI per richiamare le librerie OpenSSL ? Sembrerebbe molto ingombrante.
- Esistono provider JCE puramente java certificati FIPS che funzioneranno con Android? Open Source o a costi ragionevolmente bassi preferiti. Ho esaminato l'elenco , ma è difficile dì cosa può fare uno sviluppatore e utilizzarlo in un'app, rispetto a un OEM. I due che saltano fuori sono Jsafe di RSA e JCE di IBM. RSA è l'unico che sembra essere certificato su Android, ma la cosa migliore è che sono riuscito a scoprire che è in aumento di $ 200.000, il che sarebbe troppo costoso per un piccolo progetto di ricerca. Ma supponendo che sia là fuori e funzioni, potrei forse procedere usando qualcosa come Spongy Castle usando gli stessi algoritmi, e spero solo cambiando il fornitore avrebbe funzionato (ad es. se qualcuno voleva pagare il conto).