¿Debemos usar el proveedor de seguridad de google con OkHttp?

Estamos usando okhttp en nuestro proyecto Android para hablar con nuestra API; Todas las comunicaciones están encriptadas con SSL / TLS, y nuestros servidores pueden hablar SPDY. También estamos enlazando en Google Play Services el proveedor de ubicación fusionado y alguna otra funcionalidad.

Parte de los servicios de Google Play que no estamos utilizando actualmente es su proveedor de seguridad , que promete actualizar la pila SSL del dispositivo para proteger de alguna manera contra diversas vulnerabilidades. Sin embargo, los documentos son algo vagos en cuanto a lo que el proveedor realmente hace y qué métodos SSL se ven afectados por ella y cuáles no son (algunos ejemplos de cada uno se proporcionan, pero no una lista completa).

Por lo tanto, supongo que mi pregunta es doble:

  • ¿Funcionará el proveedor de seguridad dinámico incluso con okhttp, o no confía en las APIs de nivel inferior (o de nivel superior) que no se ven afectadas por la instalación del proveedor?

  • Suponiendo que funciona, ¿cuáles son los beneficios? ¿Hay beneficios de seguridad que vale la pena preocuparse? ¿De hecho arreglará el fallo nativo relacionado con ALPN en okhttp 2.2, como pistas nfuller ?

TL; DR: Sí.

El proveedor de seguridad dinámica de Play Services es un proveedor de servicios criptográficos JCA (CSP). Un programa Java puede tener varios CSP registrados y cada CSP puede proporcionar diferentes implementaciones de primitivas de seguridad como algoritmos hashing. Aquí está una lista de CSP incluida en Android 2.3:

  • AndroidOpenSSL versión 1.0
  • DRLCertFactory versión 1.0
  • BC versión 1.45
  • Crypto versión 1.0
  • HarmonyJSSE versión 1.0

Cuando activa el Proveedor de seguridad dinámica de Play Services como se describe en la documentación para desarrolladores de Android, sólo se agrega otro proveedor al principio de la lista:

  • GmsCore_OpenSSL versión 1.0
  • AndroidOpenSSL versión 1.0
  • DRLCertFactory versión 1.0
  • BC versión 1.45
  • Crypto versión 1.0
  • HarmonyJSSE versión 1.0

Cuando OkHttp (o cualquier otra parte de su aplicación) "hace seguridad" usando JCA, selecciona un proveedor según sus capacidades y la preferencia (orden de clasificación) que significa que se utilizará GmsCore_OpenSSL.

Al confiar en GmsCore_OpenSSL en lugar de lo que está incluido con el dispositivo de su aplicación se ejecuta en obtener una puesta al día de la aplicación de las primitivas de seguridad proporcionados, incluso en dispositivos antiguos con Android 2.3, es decir, no más SSLv3, TLS 1.2 ( Android 2.3 doesn Ni siquiera soporta TLS 1.1 ) con los actuales conjuntos de cifrado y parches de seguridad. Debido a que los Servicios de Reproducción se actualizan independientemente de Android, el Proveedor de Seguridad Dinámica de Play Services se mantiene actualizado y, por lo tanto, tiene sentido utilizarlo también en dispositivos actuales.

  • cómo resolver el error jsoup: no se puede encontrar una ruta de certificación válida a la dirección solicitada
  • Aceptación de un certificado para HTTPs en Android
  • Error 'No peer certificate' en Android 2.3 pero NO en 4
  • DownloadManager: entiende la política de reintentos y los códigos de error
  • Cadena de confianza de Android SSL con certificados intermedios (Apache HttpClient 4.X)
  • SSLSocketFactory establecimiento de tiempo de espera y propiedades de socket
  • "Certificado de servidor no confiable" en Android 2.2 pero no 3.0
  • Agregar varios certificados SSL a Android KeyStore no funciona. (Desde el archivo de recursos)
  • no se puede conectar al servidor utilizando BKS keystore
  • Carga de un archivo a través de SSL con Client Side Certificate y HttpsURLConnection de Android
  • Cordova App en Android usando SSL enviando multipart / form-data causes Error de la aplicación de rack: # <EOFError: cuerpo de contenido incorrecto>
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.