Non seulement le chiffrement n'est pas du tout démocratisé sur Android, mais en plus il est loin d'être infaillible. La clé de chiffrement d'un terminal verrouillé peut être extraite de plusieurs façons, a trouvé un chercheur en sécurité.
L'une d'entre elles consiste à exploiter des vulnérabilités de TrustZone (un ensemble de mesures de sécurité pour les puces ARM) présentes sur les processeurs Qualcomm pour s'emparer de la fameuse clé. Les deux failles en question (CVE-2015-6639 et CVE-2016-2431) ont été comblées, sauf que tous les terminaux n'ont pas encore reçu le correctif. Il n'y a pas d'estimation globale, mais selon le service d'authentification en deux étapes Duo, 37 % des terminaux qui utilisent son application sont toujours vulnérables.
En fait, la fragilité du chiffrement d'Android va bien au-delà de ces deux failles. Contrairement à iOS, la clé de chiffrement est enregistrée dans le logiciel, ce qui l'expose à d'autres failles potentielles et à toutes sortes d'attaques logicielles. Cette méthode de stockage de la clé peut aussi permettre à un fabricant de déverrouiller un de ses smartphones chiffrés dans le cadre d'une enquête judiciaire, indique le chercheur en sécurité Gal Beniamini.
L'approche d'Apple est très différente. Le chiffrement d'un terminal iOS repose sur une clé matérielle qui, comme son nom l'indique, ne dépend pas du logiciel. Interrogé par Ars Technica, le spécialiste Dan Guido compare les deux approches :
Google a toujours été en retard sur le chiffrement complet d'Android. lls n'ont jamais utilisé d'aussi bonnes techniques que celles d'Apple et d'iOS. Ils ont tout misé sur cette méthode basée sur TrustZone et une clé maître, et on s'aperçoit maintenant des risques. La surface d'attaque est plus large. Un tiers est impliqué dans le chiffrement, et tout ce logiciel supplémentaire qui gère la clé peut potentiellement avoir des bugs permettant à un assaillant de la lire.
Alors que sur iOS, c'est très simple. C'est juste une puce. Cette puce c'est la Secure Enclave, qui communique avec le système via ce qu'ils appellent une boîte aux lettres. [...] Ces deux approches sont complètement différentes. [Sur iOS] il n'y a aucun moyen de tirer parti d'un logiciel pour lire la clé matérielle.
L'expert en cryptographie Vincent Bénony que nous avions interrogé précédemment confirmait la robustesse du système d'Apple :
Pour résumer, chaque fichier est chiffré avec une clé différente, générée aléatoirement au moment de la création de ce fichier. Cette clé est conservée chiffrée à l'aide d'une autre clé, qui est elle-même calculée en fonction d'un identifiant matériel (qui a été injecté dans le téléphone lors de sa fabrication), et du code PIN de l'utilisateur.
Cette dernière clé est calculée en interne par la puce cryptographique qui a la charge d'effectuer les opérations de chiffrement et de déchiffrement. Ainsi, elle ne sort pas, et elle n'est pas accessible au système d'exploitation, ni même aux différentes interfaces, comme le JTAG. Seules les données chiffrées et déchiffrées sortent de la puce. Pour extraire l'identifiant matériel de la puce, il faudrait la décortiquer physiquement à l'aide d'appareils extrêmement coûteux ; c'est très compliqué, très délicat, et surtout, très aléatoire.
Toute la sécurité du système repose donc sur la non-divulgation de l'identifiant matériel. Il est très probable que cet identifiant soit issu d'un processus aléatoire purement physique lors de la fabrication de la puce, ce qui exclut la possibilité de le lire et de le stocker.