fromhtml example android security

example - ¿Cuándo debemos proporcionar nuestro propio vector de inicialización aleatoria(IV) con Android?



html fromhtml android example (1)

Hay muchos informes publicados que, en versiones anteriores de Android, debemos proporcionar nuestro propio SecureRandom de inicialización basado en SecureRandom (IV), ya que los predeterminados no son aleatorios:

Por el contrario, a partir del nivel de API 23, si intenta proporcionar su propio IV, también debe llamar a setRandomizedEncryptionRequired(false) en el KeyGenParameterSpec.Builder , ya que de lo contrario obtendrá una excepción "IV proporcionada por el llamante no permitida al cifrar".

Presumiblemente, en algún punto de la línea, Android pasó de "horrible" a "lo suficientemente bueno" en términos de generación IV.

¿Cuál es el límite, por debajo del cual deberíamos generar nuestro propio IV frente al uso del IV generado por Android?


Desde un punto de vista de seguridad, siempre debe proporcionar su propio IV, ya que tendría un control total de su calidad de aleatorización y eliminaría un posible punto débil de seguridad.

Respecto a la excepción, en su perspectiva, el IV es aleatorio y bueno. Pero en la perspectiva de Android, su IV suministrado es fijo y, por lo tanto, no es bueno, la API no sabe si se generó de manera aleatoria o no. Por lo tanto, la excepción "Caller-provided IV not permitted when encrypting" llama "Caller-provided IV not permitted when encrypting" es solo una advertencia general que trata de advertir a los desarrolladores contra el uso de IV defectuoso y los alienta a usar el IV incorporado.

Sin embargo, tenga en cuenta que el IV incorporado es solo un método para construir el IV. Como puede ver, nadie garantiza su calidad a partir del nivel 23 de API, por lo que la mejor práctica es asegurar su propia calidad IV.