Question:
Comment les GPU sont-ils utilisés dans les attaques par force brute?
Mahmood Muhammad Nageeb
2016-03-22 00:50:40 UTC
view on stackexchange narkive permalink

J'ai lu que les GPU peuvent être utilisés dans les attaques par force brute? Mais comment cela peut-il être fait et y a-t-il besoin 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 sur les œ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.

Comme je ne peux pas faire de commentaire: par exemple, je pourrais calculer environ 33 millions de hachages MD5 par seconde en utilisant John the Ripper avec le processeur, et environ 11,8 milliards de hachages par seconde en utilisant OclHashcat et le GPU. J'ai testé cela récemment dans le cadre d'une affectation de classe de sécurité.
Cela aide à tuer le temps pendant que le processeur fait de la force brute: P
Sept réponses:
Phil Lello
2016-03-22 01:04:21 UTC
view on stackexchange narkive permalink

Je choisis de supposer que vous 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 fois 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 processeur , ils prennent juste plus de temps.

Merci! Je ne veux pas savoir comment pirater, je veux juste comprendre l'idée. Alors, le logiciel utilisé convainc le GPU qu'il fonctionne sur un ordinateur?
@MahmudMuhammadNaguib Il utilise le GPU pour une opération non graphique - ce qui a tendance à être autorisé par conception de nos jours (il s'agissait auparavant de piratage créatif). Le processus est lancé par un programme normal.
Merci! C'est très créatif et ces gens sont de vrais hackers! Pensez-vous que les entreprises modifieront la conception à l'avenir, de sorte que les GPU ne peuvent pas être utilisés à cette fin, et est-ce possible (car les opérations graphiques incluent également des opérations mathématiques)?
@MahmudMuhammadNaguib Absolument pas! Bien qu'elles puissent être utilisées pour forcer brutalement, les mêmes capacités peuvent être utilisées pour des tonnes d'autres choses utiles. La tendance est que les GPU s'améliorent de plus en plus pour faire des choses qui ne sont pas à proprement parler graphiques. Et cette tendance existe parce qu'ils sont de plus en plus exploités pour faire ce genre de choses.
@MahmudMuhammadNaguib Je pense que la tendance est d'ajouter des GPU sur la matrice avec le CPU pour prendre en charge des opérations non graphiques hautement parallèles. Je ne vois pas en quoi il serait avantageux pour les fabricants de GPU de limiter les opérations non graphiques. Je suis un peu en dehors de mon créneau ici.
Je vois, je respecte les spécialisations.
Juste pour souligner le commentaire d'@Bakuriu's, l'API CUDA a été créée par nVIDIA spécialement pour permettre aux développeurs d'utiliser leurs GPU à des fins non graphiques. Ils encouragent fortement les utilisations créatives de leurs GPU car ils espèrent en vendre davantage en tant qu'accélérateurs de performances informatiques. Cela ne devrait pas être considéré comme du piratage, tout cela est désormais une utilisation courante des GPU pour effectuer des calculs massivement parallèles.
Puisque nous parlons de Nvidia, regardez quelques photos de leurs cartes Tesla - "[Celles-ci sont conçues uniquement pour l'informatique, donc beaucoup d'entre elles n'ont même pas de sortie vidéo] (http://blog.goldenhelix.com / mthiesen / je-veux-un-GPU-pour-une-analyse-informatique-laquelle-on-devrait-obtenir /) ". Les gens qui travaillent avec eux seront habitués à l'idée, mais une carte vidéo sans ports de sortie à l'arrière me semble tellement cool et différente.
@MahmudMuhammadNaguib Pourquoi empêcheriez-vous délibérément un GPU de pouvoir traiter des éléments qui ne sont pas des graphiques? Le fait qu'ils soient appelés PU «G» n'est qu'une inertie historique.
@MahmudMuhammadNaguib Ou pour utiliser une analogie: vous regardez les gens jeter des bouteilles en plastique par les vitres des voitures, et vous vous demandez pourquoi nous ne modifions pas la conception des fenêtres afin que seuls les déchets biodégradables puissent les traverser.
@immibies Qui a dit que je le ferais? Je ne fais que discuter! Et j'ai mentionné que c'était très créatif et que ces gens étaient de vrais hackers!
Je tiens simplement à souligner que c'est la raison pour laquelle les GPU sont considérés comme supérieurs pour l'extraction de bitcoins - ils excellent dans l'exécution d'une tâche répétitive de base dans un format massivement parallèle, comme l'envoi d'une mise à jour à chaque pixel individuel sur un moniteur HD.
La vraie réponse pour laquelle les fabricants de GPU n'envisageraient même pas de limiter cette utilisation de leur matériel est que cela ne rendrait rien de plus sûr. Les GPU sont généralement disponibles et faciles à installer sur un ordinateur à usage général, ce qui est leur principal attrait, mais des ASIC personnalisés peuvent être construits encore plus rapidement et, tant qu'il n'y a pas d'autres considérations en jeu (comme l'utilisation de scrypt et de la mémoire) ne sont pas hors ligne sur le coût - c'est pourquoi la plupart des mines de Bitcoin ces jours-ci sont passées aux ASIC personnalisés.
Outre la cryptographie et les graphiques, rien en informatique ne nécessite-t-il des opérations mathématiques?
@DDPWNAGE Ses GPU d'opérations non mathématiques sont bons pour; c'est un type particulier d'opérations mathématiques (celles qui se parallélisent très bien). La plupart de l'informatique ne fait pas grand-chose avec ce type d'opérations - la plupart disent qu'un programme de messagerie électronique ou un serveur Web est un code séquentiel rempli de branches et de conditions - celles-ci fonctionnent mieux sur le processeur.
En fait, ils sont généralement * plus lents * à faire l'opération mathématique en question, pas * plus vite *, en ce sens qu'il leur faut plus de temps pour faire une opération mathématique, ils en font juste * plus en même temps *. Les GPU gagnent via le parallélisme, pas via la vitesse. Sur un lot de travaux, ils peuvent être plus rapides et les attaques cartographiques reposent souvent sur la vérification d'un nombre ridiculement grand de combinaisons de possibilités.
user7933
2016-03-22 02:19:47 UTC
view on stackexchange narkive permalink

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 cette application et d'autres.

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 de la matrice, mélange des valeurs RBG, lecture de l'espace de texture, etc.). Cependant, ce n'est pas vraiment le principal moteur du gain de performances. Le principal moteur est le parallélisme. Un processeur haut de gamme peut avoir 12 cœurs logiques, où un GPU haut de gamme contient quelque chose comme 3072.

Pour faire simple, nombre de cœurs logiques est égal au nombre total d'opérations simultanées pouvant 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 processeur, je pourrais créer un nouveau tableau vide de la même longueur, puis générer 12 threads qui itéreraient sur les deux tableaux d'entrée à un pas égal au nombre de threads (12) et simultanément déverser la somme des valeurs dans le troisième tableau de sortie. Cela prendrait 256 itérations au total.

Cependant, avec le GPU, je pourrais à partir du CPU télécharger ces mêmes valeurs dans le GPU puis écrire un noyau qui pourrait avoir 3072 threads générés contre cela noyau en même temps et que l'opération entière soit terminée en une seule itération.

C'est pratique pour travailler sur toutes les données qui peuvent, de par leur nature, supporter le "travail" 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 autres sont apparues parce que les gens ont réalisé que nous, les programmeurs, embourbons nos pauvres petits processeurs avec du travail quand il y a une puissance énorme plante assise dans le PC à peine utilisée en revanche. Ce n'est pas seulement pour le piratage de logiciels. Par exemple, une fois que j'ai écrit un programme CUDA élaboré qui a pris l'historique du loto pendant les 30 dernières années et calculé les probabilités de prix / gains avec des billets de diverses combinaisons de tous les numéros possibles avec un nombre variable de jeux par billet, parce que je pensais que c'était mieux. idée que d'utiliser ces excellentes compétences pour simplement trouver un emploi (c'est pour rire, mais c'est malheureusement 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 idéal pour tout ce qui peut être parallélisé, en particulier sans aucune forme de verrouillage (ce qui bloque d'autres threads, diminuant considérablement les effets positifs du parallélisme).

Peut-être la prochaine question logique alors: pourquoi les processeurs ont-ils si peu de cœurs par rapport aux GPU? Est-ce simplement une considération d'espace?
@DanPantry La réponse simple est que chaque cœur de processeur est beaucoup plus complexe qu'un cœur de GPU. Les cœurs GPU sont conçus pour effectuer de nombreuses opérations (comparativement) simples, dont beaucoup se déroulent en parallèle. Les cœurs de processeur sont généralement beaucoup plus complexes et, d'une manière générale, les tâches qu'ils effectuent sont beaucoup plus difficiles à exécuter (facilement / avec succès) en parallèle (en raison de problèmes de synchronisation entre les cœurs).
Alors, votre programme de loto a-t-il réussi à éviter de trouver un emploi?
@Mindwin Malheureusement, non. Même en utilisant la série 500 GTX pour exécuter mon programme, j'ai calculé que je mourrais avant d'avoir fini de croquer toutes les combinaisons possibles de billets à 5 lignes (mon budget maximum décidé pour les billets), alors j'ai plutôt choisi de devenir un expert en fauteuil sur stackexchange et de temps en temps flânez au centre commercial local avec un panneau qui dit «codera pour la nourriture».
Excellent edit Technik - j'ai un vote positif de ma part
@DanPantry La plupart des problèmes informatiques généraux ne peuvent pas être facilement parallélisés. Les processeurs sont conçus pour être à usage général, ils sont donc plus rapides pour la plupart des choses. Les problèmes de graphisme et de craquage de code ont tendance à être facilement parallélisés, de sorte que les GPU conviennent parfaitement. Les GPU prennent plus de temps à configurer et à soumettre des opérations individuelles, mais ils peuvent ensuite être calculés en parallèle plus rapidement (voir SIMD). Les compromis et avantages du GPU ne fonctionneraient pas bien pour la plupart des problèmes informatiques.
Merci @JustinMeiners d'avoir souligné cela. J'ai essayé de transmettre cela dans le cinquième paragraphe, mais vous avez fait un meilleur travail.
Complémentaire ou complémentaire; )
ferit
2016-03-22 00:58:30 UTC
view on stackexchange narkive permalink

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 brutalement les mots de passe rar. Et oclhashcat peut utiliser votre GPU pour forcer beaucoup de choses.

Pourquoi les GPU sont beaucoup plus rapides que le CPU pour 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 dans parallèle.

Par exemple: la GeForce GTX980 Ti, qui est un GPU haut de gamme, a 2816 cœurs . Bien qu'aucun processeur de 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 créer des processeurs avec beaucoup de cœurs? Bien sûr, ils le peuvent, mais ce n'est pas bénéfique. Parce qu'en général, il n'est 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 de 2x avec 16 cœurs. Donc, l'augmentation du nombre de cœurs a des rendements très décroissants pour les processeurs.

Merci! Mais comment puis-je exécuter ce logiciel sur mon GPU, et comment ce logiciel est-il capable de faire exécuter par mon GPU des instructions de programmation?
Vous n'avez rien à faire de plus, téléchargez simplement l'outil et exécutez. Si vous ne savez pas comment exécuter, vous devriez lire la documentation de l'outil, comme tout autre outil. Il n'y a pas de différence.
Les 3 réponses sont très bonnes, j'ai quelque chose de chacune. Ne vous souciez pas des votes négatifs!
(Les processeurs ont plus de 16 cœurs - même Intel Xeons va au-dessus, Sparc M7 est à 32.)
Eh bien, en fait, ils sont pour les serveurs, pas pour les PC. Mais oui, je devrais mettre à jour ma réponse.
Criggie
2016-03-23 06:04:17 UTC
view on stackexchange narkive permalink

Au travail, nous avons des serveurs spéciaux qui résolvent "les problèmes de routage difficiles en calcul". 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 cela 32 cœurs.

Chaque boîtier a un châssis d'extension PCIe, et il y a plusieurs GPU NVidia haut de gamme, et les gros blocs d'alimentation pour les alimenter. Étant donné que chaque carte graphique a environ 2000 cœurs CUDA, cela fonctionne à environ 30000 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 comme un millier de serveurs fonctionnant sur des processeurs normaux. Beaucoup de trucs là 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 à partir du tableau actuel, et choisissez le coup unique qui mène à la plus grande chance de succès pour votre prochain coup.

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

+1, vous pouvez déposer un ou deux tesla dans une machine standard et avoir un supercalculateur.
Dendi Suhubdy
2016-03-24 03:39:39 UTC
view on stackexchange narkive permalink

Vous pouvez consulter 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.

Résumé. La cryptanalyse des chiffrements 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 manière à ce que les attaques avec des ordinateurs conventionnels soient irréalisables d'un point de vue informatique, 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 spécial. . Dédier 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 chiffrements 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), optimisée pour l'exécution d'algorithmes cryptanalytiques et pouvant être réalisée pour moins de 10 000 $ 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 à bas prix et est capable, par exemple, d'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 les 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 systèmes cryptographiques à courbe elliptique et pour factoriser des nombres. Même si la rupture des courbes RSA pleine taille (1024 bits ou plus) ou elliptiques (ECC avec 160 bits ou plus) est hors de portée avec COPACOBANA, elle peut être utilisée pour analyser les cryptosystèmes avec une petite longueur de bits (délibérément choisie) pour fournir des estimations de sécurité fiables de RSA et ECC par extrapolation3.

Matthew
2016-03-22 01:06:52 UTC
view on stackexchange narkive permalink

Un GPU brute forcer est simplement un PC avec un ou plusieurs GPU haut de gamme. Il exécute une forme de logiciel de craquage de mots de passe, 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'un bloc d'alimentation d'une puissance relativement élevée, car les cartes graphiques sont assez gourmandes en énergie, et un gros disque dur peut aider avec certaines tâches, comme la tenue de grands dictionnaires pour les attaques à utiliser.

Tout ce qu'il fait, c'est 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 clés. Il compare ensuite les résultats du hachage avec un hachage cible, qui a généralement été récupéré à partir d'un système attaqué.

chris scott
2016-03-24 20:16:07 UTC
view on stackexchange narkive permalink

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

Quand vous avez un travail simple à faire, dire biper vos articles au supermarché jusqu'à la caisse et les payer, c'est mieux d'en avoir un caisse ou 1024? Bien sûr, une vérification fonctionnera, et vous pouvez la rendre vraiment sophistiquée avec de nombreuses astuces pour accélérer les choses afin qu'elle fonctionne mieux que la normale. Mais en fin de compte, les gens ne peuvent travailler que si vite et les acheteurs ralentissent souvent les choses. Par conséquent, beaucoup de travail est meilleur.

À l'inverse, 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 fondamentalement que couper des choses?



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...