Эффективна ли архитектура Fermi для перебора паролей?

Появление технологий вычислений на графических процессорах оказало революционное влияние на индустрию восстановления паролей: благодаря тому, что перебор паролей - это хорошо распараллеливаемая задача, скорости программ удалось поднять в десятки раз. В 2010 году компания NVIDIA представила свою новую архитектуру Fermi, называя ее “самой продвинутой архитектура в истории вычислений на GPU”. Предлагаю рассмотреть детальнее, так ли хороша Fermi для перебора паролей.Преимущества Fermi хорошо известны. Вот те изменения по сравнению со старой архитектурой, которые оказывают вляние на скорость программ по перебору паролей:

  1. Количество ядер CUDA увеличено (самый слабый на сегодня GPU семейства Fermi GTX 460 имеет 336 ядер, тогда как самая мощная карта прошлого поколения имела 240).
  2. Количество регистров на мультипроцессор увеличено вдвое (с 16384 до 32768), объем разделяемой памяти - втрое (с 16К до 48К). Именно эти два параметра оказывают  ключевое вляние на загрузку мультироцессора.
  3. Введена возможность настоящих вызовов функций (до Fermi все функции интерпретировались как встроенные (inline)) - соответственно, появились указатели на функции, полная поддержка наследования методов в C++ и разрешена рекурсия.
  4. Появился кэш L1/L2 - обращения к локальной и глобальной памяти теперь кэшируется.
  5. Появились новые целочисленные команды в “ассемблере” Fermi PTX и улучшена поддержка стандарта IEEE 754 для плавающей арифметики.

По всем пунктам, как видно, архитектура Fermi превосходит предыдущую. Давайте попытаемся потвердить это на реальных задачах и программах. Я буду сравнивать GTX 460 c 336 ядрами CUDA и GTX 260 со 216 ядрами - судя по маркировке, эти карты занимают примерно один уровень в своих поколениях. Посморим, будет ли реальный прирост скорости близок в полуторакратному.

  1. Сначала протестируем карту на задаче, традиционно считающейся идеальной для GPU - перебор паролей хэшей семейства MD (MD5, SHA). Проверим как программы, считающие эти хэши однократно, так и криптосистемы, использущие многократное циклическое вычисление хэшей (RAR 3.x, MS Office 2007)
    Алгоритм Программа NVIDIA GeForce GTX 260 NVIDIA GTX 460 Ускорение, раз
    MD5 ighashgpu 690.000.000 768.000.000 1.11
    MD5 BarsWF v. 0.B 690.000.000 680.000.000 0.98
    SHA-1 (77841 раз) cRARK 3.3 2600 3840 1.47
    SHA-1 (50000 раз) Accent Office Password Recovery 4.1 4600 6340 1.37

    Таблица 1. Скорость перебора в криптосистемах, основанных на хэшах семейства MD5, паролей/сек

  2. Хотя одному приложению не удалось продемострировать рост на GTX 460, остальные результаты вполне можно назвать ожидаемыми - новый видеопроцессор оказывается быстрее, достигая почти 1.5-кратного превосходства. Очень жаль, с другой стороны, что NVIDIA не добавила в список инструкций Fermi побитовый циклический сдвиг (rol/ror), который очень часто используется в криптоалгоритмах. Его аналог, недавно появившийся в архитектуре ATI - bitalign - дает, по результататам Ивана Голубева, 40% ускорение.

  3. Теперь рассмотрим криптоалгоритмы, реализация которых на GPU традиционно считается неудобной. Самая частая причина этого, что они слишком активно и/или слишком много используют память. Из наиболее часто использующихся в современных криптосистемах к ним относятся RC4, Blowfish.
    Алгоритм Программа NVIDIA GTX 260 NVIDIA GTX 460 Ускорение, раз
    RC4 GuaPDF 13.600.000 7.200.000 0.5
    BlowFish NMSS 23.700 (*) 19.000 (**) 0.8
  4. (*) - быстрее, чем на CPU Core 2 1.86 ГГц
    (**) - медленнее, чем на CPU Core 2 1.86 ГГц

    Таблица 2. Скорость перебора в криптосистемах, неудобных для реализации на GPU, ключей/сек

    Здесь ситуация резко меняется - карта на архитектуре Fermi оказывается гораздо хуже, чем ее предшественница. Особенно странна ситуация с RC4 - все изменения кода ( в т.ч. увеличение используемой разделяемой памяти, которая очень помогала при оптимизации этого алгоритма на GTX 260) - давали только большее ухудшение скорости.

    На мой взгляд, данные результаты показывают, что, несмотря на увеличение в 2 раза регистров и в 3 раза разделяемой памяти на один мультипроцессор,  увеличение в 4-6 раз количества ядер CUDA на этот же мультипроцессор приводит к тому, что в некоторых задачах он загружается хуже, чем в предыдущем поколении. Я также не заметил особого влияения нового кэша L2 в криптографических алгоритмах с интенсивным использование памяти.

    В любом случае, эффективность архитектуры Fermi для перебора паролей является неоднозначной и она требует, как минимум, дополнительной оптимизации и настройки алгоритмов. Но в некоторых случаях все равно она может оказаться хуже, чем архитектура предыдущего поколения.

Нет комментариев

Еще нет комментариев.

RSS лента комментариев к этой записи.

Оставить комментарий

You must be logged in to post a comment.

WordPress Themes