Avec l'introduction d'Android 4.4, les développeurs sont invités à changer la manière dont les clés symétriques des passphrases sont générées via le SecretKeyFactory. Cette modification affecte les programmes qui utilisent l'algorithme de génération PBKDF2WithHmacSHA1 si leurs utilisateurs sont autorisés à utiliser des passphrases Unicode.
Auparavant, l'algorithme PBKDF2WithHmacSHA1 n'utilisait que les 8 bits de poids faible des caractères de la passphrase. Ceci est en conflit avec les recommandations de RSA Laboratories datant de 2000 et détaillées dans le document suivant PKCS #5: Password-Based Cryptography Specification Version 2.0.
Comme ce changement créé une rupture dans le fonctionnement, les développeurs peuvent maintenir une rétro compatibilité en utilisant l'ancien algorithme. Cette version a été renommée PBKDF2WithHmacSHA1And8bit
et est accessible en utilisant l'exemple de code disponible sur Android Developers Blog.
SecretKeyFactory factory;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// Use compatibility key factory -- only uses lower 8-bits of passphrase chars
factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1And8bit");
} else {
// Traditional key factory. Will use lower 8-bits of passphrase chars on
// older Android versions (API level 18 and lower) and all available bits
// on KitKat and newer (API level 19 and higher).
factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
}