web-dev-qa-db-fra.com

Comment les GPU sont-ils utilisés dans les attaques par force brute?

J'ai lu que les GPU peuvent être utilisés dans les attaques par force brute? Mais comment cela peut-il être fait et existe-t-il un besoin pour d'autres périphériques matériels (disques durs par exemple)?

Remarque: je suis plus intéressé par la sécurité des applications Web, mais je ne veux pas mettre d'œillères. Je suis désolé si ma question est ridicule pour vous, mais mon expérience matérielle n'est pas très bonne. Je sais juste comment les composants de base fonctionnent ensemble et comment les combiner.

52

Je choisis de supposer que vous demandez pourquoi c'est un risque plutôt que comment pirater.

Les GPU sont très bons pour paralléliser les opérations mathématiques, qui sont à la base de l'infographie et de la cryptographie. En règle générale, le GPU est programmé à l'aide de CUDA ou OpenCL . La raison pour laquelle ils sont bons pour les attaques par force brute est qu'ils sont des ordres de grandeur plus rapides qu'un processeur pour certaines opérations - ils ne sont pas intrinsèquement plus intelligents.

Les mêmes opérations peuvent être effectuées sur un CPU, elles prennent juste plus de temps.

55
Phil Lello

Les gens ont donné ici d'excellentes réponses qui répondent directement à votre question, mais j'aimerais donner une réponse complémentaire pour expliquer plus en détail pourquoi les GPU sont si puissants pour cela et pour d'autres applications.

Comme certains l'ont souligné, les GPU sont spécialement conçus pour être rapides avec les opérations mathématiques, car dessiner des choses sur votre écran est entièrement mathématique (traçage des positions des sommets, manipulations matricielles, mélange des valeurs RBG, lecture de l'espace de texture, etc.). Cependant, ce n'est pas vraiment la principale force motrice derrière le gain de performances. Le principal moteur est le parallélisme. n processeur haut de gamme pourrait avoir 12 cœurs logiques, où un GPU haut de gamme emballerait quelque chose comme 3072.

Pour rester simple, le nombre de cœurs logiques est égal au nombre total d'opérations simultanées qui peuvent avoir lieu sur un ensemble de données donné. Disons par exemple que je veux comparer ou obtenir la somme des valeurs de deux tableaux. Disons que la longueur du tableau est de 3072. Sur le CPU, je pourrais créer un nouveau tableau vide avec la même longueur, puis générer 12 threads qui parcourraient les deux tableaux d'entrée à un pas égal au nombre de threads (12) et vider simultanément la somme des valeurs dans le troisième tableau de sortie. Cela prendrait 256 itérations au total.

Avec le GPU cependant, je pouvais à partir du CPU télécharger ces mêmes valeurs dans le GPU puis écrire un kernel qui pourrait avoir 3072 threads générés contre ce noyau en même temps et avoir l'opération complète terminée en un seul itération.

Ceci est pratique pour travailler contre toutes les données qui, par nature, peuvent être "travaillées" de manière parallélisable. Ce que j'essaie de dire, c'est que cela ne se limite pas aux outils de piratage/maléfiques. C'est pourquoi GPGPU devient de plus en plus populaire, des choses comme OpenCL, OpenMP et ainsi de suite ont vu le jour parce que les gens ont réalisé que nous, les programmeurs, embourbons nos pauvres les petits processeurs fonctionnent quand il y a une énorme centrale électrique dans le PC à peine utilisée par contraste. Ce n'est pas seulement pour casser des logiciels. Par exemple, une fois que j'ai écrit un programme CUDA élaboré qui a pris l'histoire du loto au cours des 30 dernières années et calculé les probabilités de gagner/gagner avec des tickets de différentes combinaisons de tous les nombres possibles avec des nombres variables de jeux par ticket, parce que je pensais que c'était une meilleure idée que d'utiliser ces excellentes compétences pour obtenir un emploi (c'est pour rire, mais malheureusement c'est aussi vrai).

Bien que je n'approuve pas nécessairement les personnes qui font la présentation, cette présentation donne une illustration très simple mais plutôt précise de la raison pour laquelle le GPU est si bon pour tout ce qui peut être parallélisé, en particulier sans aucune forme de verrouillage (qui retient d'autres fils, diminuant considérablement les effets positifs du parallélisme).

51
user7933

Vous n'avez besoin d'aucun autre appareil, juste d'un GPU approprié et d'un logiciel. Par exemple, cRARk peut utiliser votre GPU pour forcer les mots de passe rar. Et oclhashcat peut utiliser votre GPU pour forcer beaucoup de choses.

Pourquoi les GPU sont beaucoup plus rapides que les CPU dans le cracking? Parce que le cracking est quelque chose que vous pouvez exécuter en parallèle (Vous pouvez utiliser chaque cœur pour essayer différents mots de passe en même temps) Et Les GPU ont beaucoup de cœurs qui peuvent être utilisés en parallèle.

Par exemple: GeForce GTX980 Ti, qui est un GPU haut de gamme, a 2816 cœurs . Bien qu'aucun processeur PC n'ait plus de 16 cœurs (le plus élevé que je connaisse est 72 cœurs mais à des fins de calcul intensif et de serveur).

Mais pourquoi les processeurs ont un peu de cœurs par rapport aux GPU? Ne peuvent-ils pas faire des processeurs avec beaucoup de cœurs? Bien sûr qu'ils le peuvent, mais ce n'est pas bénéfique. Parce qu'il n'est généralement pas possible de traiter en parallèle comme des graphiques. De nombreux logiciels doivent traiter séquentiellement, et même s'ils peuvent traiter en parallèle, il n'est pas courant d'écrire un logiciel pour le traitement parallèle, car c'est plus difficile pour les développeurs.

Voir le graphique ci-dessous:

enter image description here

En supposant qu'en moyenne% 50 du traitement peut être parallélisé, l'accélération n'est que 2x avec 16 cœurs. L'augmentation du nombre de cœurs a donc des rendements très décroissants pour les processeurs.

13
ferit

Au travail, nous avons des serveurs spéciaux qui résolvent les "problèmes de routage difficiles à calculer". Chaque hôte est assez bien spécifié avec quatre sockets et des xeons quad core, donc 16 cœurs physiques et HT en plus. Appelez-le 32 cœurs.

Chaque boîtier possède un châssis d'extension PCIe, et il y a plusieurs GPU NVidia haut de gamme, et les gros PSU pour les alimenter. Étant donné que chaque carte graphique a environ 2000 cœurs CUDA, cela fonctionne à environ 30 000 cœurs CUDA par hôte.

Donc, si nous agissons à la main et appelons un cœur CUDA l'équivalent d'un cœur de processeur, ce serveur est le même que mille serveurs fonctionnant sur des processeurs normaux. Beaucoup de fudging là-bas parce que les cœurs CUDA ne sont pas bons pour certaines tâches, mais très bons pour d'autres.

Imaginez résoudre le problème du voyageur de commerce en énumérant tous les itinéraires possibles et en choisissant le meilleur. Ou en énumérant tous les coups d'échecs possibles du plateau actuel, et choisissez le coup unique qui mène aux meilleures chances de succès pour votre prochain coup.

Pas besoin d'heuristique puante quand toutes les réponses possibles ont été calculées! Et c'est la définition d'une attaque par force brute.

3
Criggie

Vous voudrez peut-être voir ce lien https://www.iacr.org/archive/ches2006/09/09.pdf . L'avantage d'un GPU est de paralléliser les calculs logarithmiques discrets massifs nécessaires pour casser un cryptosystème.

Abstrait. La cryptanalyse de chiffres symétriques et asymétriques est extrêmement exigeante en termes de calcul. Étant donné que les paramètres de sécurité (en particulier la longueur de clé) de presque tous les algorithmes de cryptographie pratiques sont choisis de telle sorte que les attaques avec des ordinateurs conventionnels sont impossibles à calculer, la seule façon prometteuse de s'attaquer aux chiffrements existants (en supposant qu'il n'y ait pas de percée mathématique) est de construire du matériel à usage spécial . Consacrer ces machines à la tâche de la cryptanalyse est la promesse d'un rapport coût-performance considérablement amélioré afin que la rupture des chiffres commerciaux soit à portée de main. Cette contribution présente la conception et la réalisation de la machine COPACOBANA (Cost-Optimized Parallel Code Breaker), qui est optimisée pour exécuter des algorithmes cryptanalytiques et peut être réalisée pour moins de 10000 $ US. On montrera que, selon l'algorithme réel, l'architecture peut surpasser les ordinateurs conventionnels de plusieurs ordres de grandeur. COPACOBANA héberge 120 FPGA à faible coût et peut, par exemple, effectuer une recherche de clé exhaustive du Data Encryption Standard (DES) en moins de neuf jours en moyenne. En tant qu'application réelle, notre architecture peut être utilisée pour attaquer des documents de voyage lisibles par machine (ePass). COPACOBANA est destiné, mais pas nécessairement limité à la résolution de problèmes liés à la cryptanalyse. L'architecture matérielle convient aux problèmes de calcul qui sont parallélisables et ont de faibles besoins de communication. Le matériel peut être utilisé, par exemple, pour attaquer des cryptosystèmes à courbe elliptique et pour factoriser des nombres. Même si casser des courbes RSA (1024 bits ou plus) pleine taille ou ECC (160 bits ou plus) est hors de portée avec COPACOBANA, il peut être utilisé pour analyser des cryptosystèmes avec une petite longueur de bits (délibérément choisie) pour assurer une sécurité fiable estimations de RSA et ECC par extrapolation3.

2
Dendi Suhubdy

Un brute forcer GPU est simplement un PC avec un ou plusieurs GPU haut de gamme. Il exécute une forme de logiciel de craquage de mot de passe, qui est optimisé pour utiliser la puissance de traitement GPU spécialisée pour des opérations mathématiques hautes performances sur de grands nombres.

Il a généralement besoin d'une alimentation relativement élevée, car les cartes graphiques sont assez gourmandes en énergie et un gros disque dur peut aider à certaines tâches, telles que la tenue de grands dictionnaires pour les attaques à utiliser.

Il ne fait que hacher les choses très rapidement, que ce soit à partir de dictionnaires ou de générateurs qui produisent des séquences de caractères pour couvrir tout l'espace de touches. Il compare ensuite les résultats du hachage avec un hachage cible, qui a généralement été récupéré d'un système attaqué.

2
Matthew

Toutes des réponses très techniques mais pour le mettre dans un contexte plus réel.

Lorsque vous avez un travail simple à faire, par exemple, faire bip-bip de vos articles au supermarché et payer, vaut-il mieux avoir une caisse ou 1024? Bien sûr, une caisse fonctionnera, et vous pouvez la rendre très sophistiquée avec de nombreuses astuces pour accélérer les choses afin qu'elle fonctionne mieux qu'une normale. Mais à la fin de la journée, les gens ne peuvent travailler que si vite et les acheteurs ralentissent souvent les choses. Par conséquent, les charges de labour mieux.

Inversement lorsque vous avez un travail très difficile à faire comme la chirurgie. Est-il préférable d'avoir un chirurgien vraiment qualifié soutenu par une petite mais bonne équipe ou une armée de bouchers qui sont bons dans ce qu'ils font, mais qui ne peuvent essentiellement couper que des trucs?

2
chris scott