Le ministère de la Justice a réussi à déverrouiller un iPhone 5c utilisé par le tireur Syed Rizwan Farook, qui avec sa femme a tué 14 personnes à San Bernardino, en Californie, en décembre dernier. L'affaire très médiatisée a opposé les forces de l'ordre fédérales à Apple, qui a combattu un ordre juridique pour contourner sa fonction de sécurité par mot de passe afin de donner aux forces de l'ordre l'accès aux données du téléphone. Le FBI l'a dit
s'est appuyé sur un tiers
pour casser les données cryptées du téléphone, soulevant des questions sur la sécurité de l'iPhone et si les agences fédérales devraient divulguer leur méthode.
Mais que se passe-t-il si l'appareil fonctionnait sous Android ? Le même drame technique et juridique se serait-il joué ?
Nous sommes des utilisateurs et des chercheurs d'Android, et la première chose que nous avons faite lorsque le différend FBI-Apple a frappé les médias populaires a été de lire Android
Chiffrement complet du disque
Documentation.
Nous avons tenté de reproduire ce que le FBI avait voulu faire sur un téléphone Android et avons trouvé des résultats utiles. Au-delà du fait que l'écosystème Android implique davantage d'entreprises, nous avons découvert quelques différences techniques, notamment un moyen de mettre à jour à distance et donc de déverrouiller les clés de cryptage, ce que le FBI n'a pas été en mesure de faire pour l'iPhone 5c à lui seul.
Les moyens faciles de
Le cryptage des données sur les smartphones implique une clé que le téléphone crée en combinant 1) le code de déverrouillage d'un utilisateur, le cas échéant (souvent un code d'accès à quatre à six chiffres), et 2) un numéro long et compliqué spécifique à l'appareil individuel utilisé. Les attaquants peuvent essayer de déchiffrer soit la clé directement - ce qui est très difficile - soit des combinaisons du code d'accès et du numéro spécifique à l'appareil, qui est caché et à peu près tout aussi difficile à deviner.
Le décodage de ce cryptage fort peut être très difficile. Mais parfois, accéder à des données cryptées à partir d'un téléphone n'implique aucune rupture de code. Voici comment:
Une application personnalisée pourrait être installée sur un téléphone cible pour extraire des informations. En mars 2011, Google
installé à distance un programme
qui a nettoyé les téléphones infectés par des logiciels malveillants. On ne sait pas si Android le permet toujours.
De nombreuses applications utilisent Android
API de sauvegarde
. Les informations sauvegardées, et donc accessibles directement depuis le site de sauvegarde, dépendent des applications installées sur le téléphone.
Si les données cibles sont stockées sur une carte SD amovible, elles peuvent être non cryptées. Seules les versions les plus récentes d'Android permettent à l'utilisateur de
crypter une carte SD amovible entière
;
toutes les applications ne chiffrent pas les données stockées sur une carte SD
.
Certains téléphones sont équipés de lecteurs d'empreintes digitales, qui peuvent être
déverrouillé avec une image
de l'empreinte digitale du propriétaire du téléphone.
Certaines personnes ont modifié les systèmes d'exploitation de leurs téléphones pour leur donner des privilèges « root » – accès aux données de l'appareil au-delà de ce qui est autorisé pendant les opérations normales – et potentiellement affaiblir la sécurité.
Mais si ces options ne sont pas disponibles, le bris de code est le moyen restant. Dans ce qu'on appelle une attaque par « force brute », un téléphone peut être déverrouillé en essayant toutes les clés de cryptage possibles (c'est-à-dire toutes les combinaisons de caractères possibles) jusqu'à ce que le bon un est atteint et l'appareil (ou les données) se déverrouille.
Commencer l'attaque
Une représentation très abstraite de la dérivation des clés de cryptage sur Android.
William Enck et Adwait Nadkarni
,
CC BY-ND
Il existe deux types d'attaques par force brute : hors ligne et en ligne. À certains égards, une attaque hors ligne est plus facile : en copiant les données de l'appareil vers un ordinateur plus puissant, des logiciels spécialisés et d'autres techniques peuvent être utilisés pour essayer toutes les combinaisons de codes d'accès.
Mais les attaques hors ligne peuvent également être beaucoup plus difficiles, car elles nécessitent soit d'essayer toutes les clés de cryptage possibles, soit de déterminer le mot de passe de l'utilisateur.
et
la clé spécifique à l'appareil (l'ID unique sur Apple et la clé liée au matériel sur les versions plus récentes d'Android).
Essayer toutes les solutions potentielles à une clé AES 128 bits assez standard signifie essayer les 100 undécillions (10
38
) solutions potentielles – assez pour prendre un supercalculateur
plus d'un milliard de milliards d'années
.
Deviner le mot de passe peut être relativement rapide : pour un code PIN à six chiffres avec uniquement des chiffres, cela ne représente qu'un million d'options. Si les lettres et les symboles spéciaux comme « $ » et « # » sont autorisés, il y aurait plus d'options, mais toujours seulement dans les centaines de milliards. Cependant, deviner la clé spécifique à l'appareil serait probablement aussi difficile que de deviner la clé de chiffrement.
Envisager une attaque en ligne
Reste l'attaque en ligne, qui se produit directement sur le téléphone. Avec la clé spécifique à l'appareil facilement disponible pour le système d'exploitation, cela réduit la tâche à la charge beaucoup plus légère d'essayer uniquement tous les codes d'accès potentiels.
Cependant, le téléphone lui-même peut être configuré pour résister aux attaques en ligne. Par exemple, le téléphone peut insérer un délai entre un échec de devinette du mot de passe et permettre une autre tentative, ou même supprimer les données après un certain nombre de tentatives infructueuses.
L'iOS d'Apple possède ces deux capacités, introduisant automatiquement des délais de plus en plus longs après chaque échec et, au choix de l'utilisateur, effaçant l'appareil après 10 échecs de code d'accès.
Attaquer un téléphone Android
Que se passe-t-il lorsque l'on essaie de pirater un téléphone Android verrouillé ? Différents fabricants configurent leurs appareils Android différemment ; Les téléphones Nexus exécutent la configuration Android standard de Google. Nous avons utilisé un appareil Nexus 4 fonctionnant sous Android 5.1.1 et le cryptage complet du disque activé.
Android ajoute des délais de 30 secondes toutes les cinq tentatives infructueuses ; instantané de la 40e tentative.
William Enck et Adwait Nadkarni
,
CC BY-ND
Nous avons commencé avec un téléphone qui fonctionnait déjà mais dont l'écran était verrouillé. Android autorise les codes PIN, les mots de passe et le verrouillage basé sur des modèles, dans lesquels un utilisateur doit connecter une série de points dans le bon ordre pour déverrouiller le téléphone ; nous avons effectué ce test avec chaque type. Nous avions attribué manuellement le mot de passe réel sur le téléphone, mais nos tentatives de déverrouillage ont été générées de manière aléatoire.
Après cinq tentatives infructueuses de mot de passe, Android a imposé un délai de 30 secondes avant d'autoriser un autre essai. Contrairement à l'iPhone, les retards ne se sont pas allongés avec les échecs ultérieurs ; sur 40 tentatives, nous n'avons rencontré qu'un délai de 30 secondes après cinq échecs. Le téléphone a compté le nombre de tentatives successives qui avaient échoué, mais n'a pas effacé les données. (Les téléphones Android d'autres fabricants peuvent insérer des retards croissants similaires à iOS.)
Ces retards imposent une pénalité de temps importante à un attaquant. Forcer brutalement un code PIN à six chiffres (un million de combinaisons) pourrait entraîner un retard dans le pire des cas d'un peu plus de 69 jours. Si le code d'accès était composé de six caractères, même en utilisant uniquement des lettres minuscules, le délai le plus défavorable serait supérieur à 58 ans.
Lorsque nous avons répété l'attaque sur un téléphone qui avait été éteint et qui venait juste de démarrer, on nous a demandé de redémarrer l'appareil après 10 tentatives infructueuses. Après 20 tentatives infructueuses et deux redémarrages, Android a lancé un compte à rebours des tentatives infructueuses qui déclencheraient un effacement de l'appareil. Nous avons continué notre attaque, et à la 30e tentative - comme averti à l'écran et
dans la documentation Android
– l'appareil a effectué une « réinitialisation d'usine », effaçant toutes les données utilisateur.
Il ne reste qu'une tentative avant que l'appareil n'efface ses données.
William Enck et Adwait Nadkarni
,
CC BY-ND
Contrairement aux attaques hors ligne, il existe une différence entre Android et iOS pour les attaques par force brute en ligne. Dans iOS, l'écran de verrouillage et le processus de démarrage peuvent effacer les données de l'utilisateur après un nombre fixe de tentatives infructueuses, mais uniquement si l'utilisateur l'active explicitement. Sous Android, le processus de démarrage efface toujours les données de l'utilisateur après un nombre fixe de tentatives infructueuses. Cependant, notre appareil Nexus 4 ne nous a pas permis de définir une limite pour les défaillances de l'écran de verrouillage. Cela dit, Android et iOS disposent d'options de gestion à distance qui, si elles sont activées, peuvent effacer les données après un certain nombre de tentatives infructueuses.
Utiliser des outils spéciaux
L'iPhone 5c dans l'étui San Bernardino appartient à l'employeur de l'un des tireurs et dispose d'un logiciel de gestion des appareils mobiles (MDM) qui permet à l'entreprise de le suivre et d'effectuer d'autres fonctions sur le téléphone par télécommande. Une telle application MDM est généralement installée en tant qu'application « Administrateur d'appareils » sur un téléphone Android et configurée à l'aide de l'outil « Apple Configurator » pour iOS.
Notre test MDM réinitialise avec succès le mot de passe. Ensuite, la fonction de dérivation de clé de chiffrement (KDF) est utilisée pour générer la nouvelle clé de chiffrement de clé (KEK).
William Enck et Adwait Nadkarni
,
CC BY-ND
Nous avons créé notre propre application MDM pour notre téléphone Android et vérifié que
le mot de passe peut être réinitialisé
sans le consentement explicite de l'utilisateur ; cela a également mis à jour les clés de cryptage du téléphone. Nous pourrions ensuite utiliser le nouveau mot de passe pour déverrouiller le téléphone à partir de l'écran de verrouillage et au démarrage. (Pour que cette attaque fonctionne à distance, le téléphone doit être allumé et avoir une connectivité Internet, et l'application MDM doit déjà être programmée pour réinitialiser le mot de passe sur commande à partir d'un serveur MDM distant.)
Déterminer où obtenir de l'aide supplémentaire
Si un attaquant avait besoin de l'aide d'un fabricant de téléphones ou d'un éditeur de logiciels, Android présente un paysage plus diversifié.
Généralement, le logiciel du système d'exploitation est signé avec un code numérique qui prouve qu'il est authentique et dont le téléphone a besoin avant de l'installer réellement. Seule l'entreprise disposant du code numérique correct peut créer une mise à jour du logiciel du système d'exploitation, ce qui peut inclure une « porte dérobée » ou un autre point d'entrée pour un attaquant qui a obtenu l'aide de l'entreprise. Pour n'importe quel iPhone, c'est Apple. Mais de nombreuses entreprises construisent et vendent des téléphones Android.
Google, le principal développeur du système d'exploitation Android, signe les mises à jour de ses appareils phares Nexus. Samsung signe pour ses appareils. Les opérateurs de téléphonie mobile (comme AT&T ou Verizon) peuvent également signer. Et de nombreux utilisateurs installent une version personnalisée d'Android (telle que
Cyanogènemod
). La ou les entreprises qui signent le logiciel seraient celles dont le FBI avait besoin pour persuader – ou contraindre – d'écrire un logiciel permettant une entrée.
Comparer iOS et Android
Dans l'ensemble, les appareils exécutant les versions les plus récentes d'iOS et d'Android sont protégés de manière comparable contre les attaques hors ligne, lorsqu'ils sont correctement configurés par le fabricant du téléphone et l'utilisateur final. Les versions plus anciennes peuvent être plus vulnérables ; un système pourrait être
fissuré en moins de 10 secondes
. De plus, les défauts de configuration et de logiciel des fabricants de téléphones peuvent également compromettre la sécurité des appareils Android et iOS.
Mais nous avons trouvé des différences pour les attaques en ligne, en fonction de la configuration de l'utilisateur et de la gestion à distance : Android a une valeur par défaut plus sécurisée pour les attaques en ligne au démarrage, mais notre Nexus 4 ne permettait pas à l'utilisateur de définir un nombre maximum de tentatives infructueuses à partir du verrou écran (les autres appareils peuvent varier). Les appareils exécutant iOS ont ces deux capacités, mais un utilisateur doit les activer manuellement à l'avance.
La sécurité d'Android peut également être affaiblie par un logiciel de contrôle à distance, selon le logiciel utilisé. Bien que le FBI n'ait pas pu accéder à l'iPhone 5c en réinitialisant le mot de passe de cette manière, nous avons réussi une attaque similaire sur notre appareil Android.
Cet article a été mis à jour le 8 avril 2016 pour ajouter un mot manquant « pas » dans la phrase commençant par « Le téléphone a compté... »