Agregar la propia implementación de criptografía en Android

2

Dado que Android permite la implementación criptográfica de Java y Native, me gustaría saber cómo proporcionar una implementación particular de algoritmos criptográficos (por ejemplo, solo RSA). ¿Cuál sería la mejor manera de proporcionarlo (en términos de facilidad de desarrollo, facilidad de integración, facilidad de uso)?

¿Es como un paquete de Java Crypto Provider (JCE)? ¿O es como un motor OpenSSL?

El código nativo tiene la ventaja de ser más rápido. ¿Qué habla por JCE?

    
pregunta user907810 28.08.2013 - 15:28
fuente

1 respuesta

2

En general, no querría agregar su propia implementación criptográfica de ningún protocolo o algoritmo seguro. Hay algunas razones para esto:

  1. Es poco probable que codifiques una implementación correcta en el primer intento.
  2. Su código no ha sido analizado durante años como muchas bibliotecas de criptografía de código abierto.
  3. Lo más probable es que su código sea más lento, independientemente del motor JCE o OpenSSL porque otras bibliotecas ya se han optimizado para la velocidad.

Android proporciona una API para interactuar con la biblioteca OpenSSL que ya está presente. Esto se llama Spongy Castle , que es una versión modificada de Bouncy Castle. Los algoritmos que admite ya deberían satisfacer sus necesidades. Aquí hay algunos código de ejemplo utilizando la API.

Dicho esto, y te animo a que no utilices tu propia implementación , hay dos rutas a las que puedes ir.

JCE personalizado
Esto es probablemente más de tu callejón y lo que quieres hacer. Aquí hay un enlace a Cómo implementar un proveedor . Aquí proporciona clases para cada servicio criptográfico que desea implementar. Lo más probable es que tenga que firmar con su proveedor y proporcionar su solicitud con la clave pública para verificarla.

Adición de una biblioteca compartida
Una forma más divertida (en mi opinión, de todos modos) es crear su propia implementación criptográfica agregando una biblioteca criptográfica compartida a Android y proporcionar un JNI para que la use la aplicación. La biblioteca principal se escribiría en C, y compilado de forma cruzada para ARM utilizando el NDK de Android. Luego, deberá escribir un proveedor de Java (JNI) que se pueda registrar con Dalvik para que su aplicación lo ejecute. Este es un ejemplo de cómo instalar una biblioteca criptográfica diferente en su teléfono.

Esto tiene la desventaja de que es necesario reconstruir Android y actualizar tu dispositivo. No es ideal para una aplicación que se instala desde Google Play.

    
respondido por el RoraΖ 07.10.2014 - 16:57
fuente

Lea otras preguntas en las etiquetas