Depuis plusieurs années déjà, les processeurs graphiques que l’on appelle plus communément GPUs permettent d’effectuer d'autres tâches plus généralistes que les simples rendus 3D et calculs de pixels dans les jeux vidéo. Cette technologie dite GPGPU (General-Purpose computation on Graphic Processing Units) exploite la puissance de calcul des GPUs pour le traitement des tâches (ou threads) massivement parallèles. Contrairement au CPU, un GPU a une architecture parallèle particulièrement adaptée à certains types de calculs demandant des exécutions d’algorithmes parallélisables. Les CPUs sont quant à eux conçus pour offrir les meilleures performances en fonction du flux d'instructions utilisées, et donc exécuter une tâche (ou un thread) le plus rapidement possible. Conséquence logique, l'architecture des deux puces est différente : lorsque la plus grande partie des transistors d'un CPU est consacrée à la mémoire cache, une large proportion du GPU est dédiée aux unités d'exécution.
La puissance des processeurs GPUs est de l'ordre de 60x plus rapide que les CPUs dernière génération
D’ores et déjà l’utilité des GPUs n’est plus à démontrer et ils sont utilisés dans de nombreux domaines. Par exemple, la bio-informatique dans le calcul du séquençage des protéines permet d’obtenir un gain de 27% sur les applications. Dans le monde des sciences météorologiques et atmosphériques, les calculs obtenus par les GPUs sont de l’ordre de 60 x plus rapides que les processeurs dernière génération. La puissance des GPUs offre aux établissements de services financiers un avantage compétitif significatif en accélérant des applications de calculs financiers en quelques secondes au lieu de plusieurs heures. Autre avantage et pas des moindres durant les temps qui courent, les GPUs consomment peu, sont moins onéreux et occupent peu d’espace en comparaison des CPUs. La puissante brute théorique d’un CPU ou GPU peut se mesurer en FLOPS (FLoating point Operations Per Second). Les opérations en virgule flottante (additions ou multiplications) incluent toutes les opérations qui impliquent des nombres réels. De telles opérations, qui prennent beaucoup plus de temps de calcul que des opérations sur les nombres entiers, se produisent souvent dans certains types d'applications. Certes cette mesure ne représente pas la puissance réelle d’un processeur puisque d’autres facteurs de vélocité de calcul comme les échanges de données en mémoire ne sont pas pris en compte ici. Le tableau ci-dessous compare CPUs et GPUs en matière de prix, puissance et consommation électriques. (MAI 2016)
Fabricant | Modèle | Type | Gflops | Watt | Prix |
Nvidia | GeForce GTX 980 Ti | GPU (2 816 cœurs) | 5632 Gflops | 250W | 750 € |
ATI | Radeon R9 Fury X | GPU (3 584 cœurs) | 8602 Gflops | 275W | 650 € |
Nvidia | Tesla K80 | GPU (4 992 cœurs) | 8740 Gflops | 300W | 5 000 € |
Intel | Intel Core i7-6700K | CPU (4 cœurs) | 209 Gflops | 91W | 400 € |
Intel | Intel® Xeon® Processor E7-8890 v3 | CPU (18 cœurs) | 1440 Gflops | 165W | 7 000 € |
Application de cette puissance au "cassage de mot de passe"
Aujourd’hui les « petits malins du net » ont su prendre parti de cette formidable force de calculs : à but lucratif simplement en montant une ferme le calcul de bitcoin, ou à des fins plus dark pour les hackers comme le cassage de mot de passe par exemple. Nous n’allons pas nous mentir et admettons aisément que les raisons à vouloir casser des mots de passe sont assez obscures. Généralement, il ne se passe pas un jour sans qu’un site web se fasse corrompre une base de données et ainsi dérober des milliers d’informations et bien souvent des hash des mots de passe. Le hash est le résultat d’une fonction particulière qui, à partir d'une donnée fournie en entrée, calcule une empreinte de taille fixe qui semble aléatoire. Exemple avec du SHA2 : M0n$up3rPWD = eca6e8d8258daf496f0f315d5fae807748d8df1e1669560a6d655a814b8309b4 Par contre une telle fonction est qualifiée de fonction à sens unique, puisque le but est de rendre impossible la récupération du message original à partir d'une empreinte. Une fois en possession des hashs les hackers pourront épauler de leur GPU, tenter de casser les mots de passe et ainsi accéder aux systèmes et ressources protégées. Cela dit, avant il peut y avoir des raisons légitimes en particulier pour un sysadmin ou un webmaster à vouloir « casser les mots de passe », comme pour tester et analyser la politique de sécurité, prouver que les utilisateurs suivent bien la politique de sécurité, ou tout simplement à se sensibiliser aux notions de cryptographie. De nombreuses solutions tournant principalement sur Linux peuvent exécuter des attaques par dictionnaire et de force brute permettent d’évaluer la fiabilité et la robustesse d’un mot de passe. Il est vrai que de nos jours la plupart des systèmes imposent une politique de sécurité pour les mots de passe comme une longueur minimum et avec majuscules et caractères spéciaux. Cependant on trouve encore souvent des systèmes qui signifient simplement la fiabilité du mot de passe sans imposer aux utilisateurs une véritable politique de sécurité.
Quoiqu'il soit plutôt important de vérifier votre mot de passe afin de veiller à ce que le premier Hacker équipé d’une carte graphique de gamer à 300€ ou simplement avec l’aide de services cloud computing (Amazone EC2, Microsoft Azure…) ne puisse pas casser votre mot de passe en quelques heures. D’un point de vue très basique, le craquage de mot de passe fonctionne sur le principe de la comparaison. Il s’agit de comparer au hash existant, le résultat d’un mot de passe créé aléatoirement après s’être exécuté à travers un algorithme de hachage. La principale différence entre la fissuration et une connexion régulière est le faite de faire des centaines de milliers, voire des millions de ces comparaisons par seconde. En vous mettant dans la peau d’un hacker, vous vous rendrez vite compte quels sont les mots de passe faciles à hacker et ceux qui sont compliqués voire impossible à casser. Cela vous aidera grandement à analyser et à mettre à jour votre politique de mot de passe. Ayant cette notion en tête il est alors facile d’extrapoler ce potentiel et d’imaginer ce que l’on pourrait ainsi réaliser grâce à cette puissance de calcul. Nous pouvons imaginer utiliser la puissance hardware des GPUs pour tenter de pénétrer des réseaux, tel que le wi-fi utilisant le WPA/WPA2 ou voire même directement à partir de certains éléments actifs mal protégés en frontal d’Internet (Cisco-ASA, Cisco- PIX, Juniper Netscreen/ScreenOS …). Plus généralement tout service, application avec un besoin d’authentification par mot de passe tel apache, Oracle, NTLM, Kerberos, MySQL, Citrix, Ms Office, Zip et bien d’autres ne se retrouvent plus forcément à l’abri d’une corruption par brute force.
D'autres applications par des malwares
Nous venons de voir jusque-là l’incroyable atout en matière de puissance que peuvent offrir les cartes graphiques pour fissurer des mots de passe, mais dans le monde de l’informatique les personnes malveillantes ne se sont pas arrêtées là. L’inventivité de ce que l’on appelle les Black hate a permis de mettre sur pied de nouveaux malwares d’une incroyable sophistication tirant parti des GPUs afin de parvenir à leurs fins. Des développeurs ont réussi à concevoir un type de malware capable de venir infecter un PC aussi bien sur Windows que sur Linux en exploitant des failles dans les cartes graphiques des acteurs majeurs du marché (AMD, NVidia et Intel). Le malware baptisé Jellyfish est en fait un rootkit conçu pour surveiller le noyau du système à partir du processeur graphique en passant par l’accès direct à la mémoire. Ce qui traduit que ce malware n’a aucun recours au CPU pour exécuter son code malicieux. La complexité de cette technique d’infection vient du fait que ce code malveillant arrive à s’exécuter de manière furtive sans que l’utilisateur puisse s’en apercevoir, puisque les GPUs ne sont pas contrôlés par les moyens usuels de contrôle d’infection. D’autres malwares utilisent la puissance de calcul des GPUs Pour chiffrer plus efficacement et ainsi éviter des exécutions les routines de décompression sur le CPU, ce qui est détectable par les programmes de protection. De plus, le malware est capable de se chiffrer en temps réel, le code est divisé en plusieurs sections et chaque section est déchiffrée à la demande via le GPU et re-chiffrée dès la fin de l'exécution. L'idée est que le malware n'est jamais entièrement disponible en clair dans la mémoire vive et les clés de chiffrement sont stockées dans la mémoire du GPU, qui n'est pas accessible par un programme classique, alors que le malware lui-même travaille dans la zone partagée entre le CPU et le GPU. Pour le moment, il ne s'agit que de concepts certes fonctionnels mais les malwares utilisant les GPUs pour d'autres usages sont à prendre avec attention dans le futur.
Sources :
Puissance de supercalculateurs GPU : http://www.nvidia.fr/object/tesla-gpus-power-titan-supercomputer-20121029-fr.html
Applications accélérées par les GPU : http://www.nvidia.fr/object/gpu-computing-applications-fr.html
Comparatif CPU /GPU http://cpuboss.com/ et http://gpuboss.com/http://www.nextplatform.com/2015/05/05/intel-puts-more-compute-behind-xeon-e7-big-memory/
123m4ng3m0ng33k https://aws.amazon.com/fr/ec2/http://hashcat.net/hashcat/http://www.linuxjournal.com/content/hack-and-password-cracking-gpus-part-i-setuphttp://arstechnica.com/securit...