OASAM-CRYPT-002: Insecure Data Storage

Descripción
El uso de cifrado por sí solo no es suficiente para asegurar la confidencialidad de la información. Es necesario utilizar las funciones de cifrado de la manera adecuada, utilizando los algoritmos más robustos y las claves del mayor número posible de bits. Por ejemplo, utilizar AES como algoritmo de cifrado es posible en Android, pero es recomendable utilizar una clave de 256 bits en lugar de 128.


Riesgos
Un usuario malintencionado podría ejecutar ataques sobre la criptografía utilizada. Hay que tener en cuenta que un usuario con privilegios de administrador puede inspeccionar la memoria de los procesos del dispositivo, con lo que podría tener acceso directo a toda la información que no se encuentre cifrada.


Recomendaciones
Se recomienda utilizar AES con 256 bits de clave. Asimismo, es recomendable generar los vectores IV mediante SecureRandom y que la clave derive de una contraseña utilizando protocolos reconocidos como PBKDF2 (Password-Based Key Derivation Function)


Referencias
1. Flaw 32 de “42+ Best parctices in secure mobile development for iOS and Android”
2. Flaw 6.5.2 de “A Study of Android Application Security”
3. OWASP Top Ten Mobile Risk número 1: Insecure Data Storage.
4. RFC 6070, http://tools.ietf.org/html/rfc6070
5. DRD17-J. Do not use the Android cryptographic security provider encryption default for AES - https://www.securecoding.cert.org/confluence/display/java/DRD17-J.+Do+not+use+the+Android+cryptographic+security+provider+encryption+default+for+AES
6. DRD18-J. Do not use the default behavior in a cryptographic library if it does not use recommended practices - https://www.securecoding.cert.org/confluence/display/java/DRD18-J.+Do+not+use+the+default+behavior+in+a+cryptographic+library+if+it+does+not+use+recommended+practices