Recientemente me encargaron un proyecto de investigación para escribir una "aplicación de mensajería segura" utilizando "protocolos aprobados por el gobierno" (el gobierno es EE. UU.). Entiendo que esto significa cifrado asimétrico y algoritmos criptográficos aprobados por el gobierno, AKA FIPS 140 (-1?) Y hashing (FIPS 180-x).
Algunos dispositivos Android como el Galaxy S4 y el HTC One se anuncian como certificados FIPS.
-
¿El código de nivel de aplicación puede aprovechar el certificado? Implementación en estos dispositivos? E.G., si uso el estándar API de Android / Java para abrir una conexión HTTPS o generar un SHA256 Hash, ¿esas llamadas se harían con un certificado FIPS? implementación?
Si es así:
- eso significaría que han reemplazado al proveedor de Android JCE predeterminado, ¿correcto?
- ¿hay alguna manera de determinar que una JCE certificada por FIPS está disponible?
Si no:
- para hacer una aplicación certificable FIPS, como mínimo, necesitaría usar JNI para llamar a un certificado por FIPS Implementación de OpenSSL , o un proveedor alternativo de Java JCE, ¿correcto? (fuera de crear una implementación personalizada)
- Suponiendo que se utilice una implementación OpenSSL certificada por FIPS, esto significaría que cualquier llamada de red segura (por ejemplo, HTTPS), tendría que hacerse ya sea en el código nativo (C) invocando la implementación OpenSSL, o usar JNI para invocar las bibliotecas OpenSSL ? Eso parece ser muy engorroso.
- ¿Hay algún proveedor de JCE de Java puro certificado por FIPS que funcione con Android? De código abierto o con un costo razonablemente bajo. He visto la lista , pero es difícil diga qué es lo que un desarrollador puede obtener y usar en una aplicación, frente a un OEM. Los dos que saltan fuera son Jsafe de RSA y JCE de IBM. RSA es el único que parece estar certificado en Android, pero lo mejor que he podido descubrir es que cuesta más de $ 200,000, lo que sería demasiado caro para un pequeño proyecto de investigación. Pero suponiendo que esté disponible y funcione, tal vez podría seguir utilizando algo como Spongy Castle utilizando los mismos algoritmos, y con suerte simplemente cambiando el proveedor trabajaría (por ejemplo, si alguien quisiera pagar la factura)