Подводка ведущего

Так, ну я думаю, что с перебором пароля нам все стало более-менее понятно. Но сейчас давайте мы немножечко сузим тематику, о которой мы говорим. Потому что в целом поговорим про мобильную криминалистику, с которой мы и начинали. Сузим тему. Всегда есть очень много теорий о том, что в принципе наш телефон — это сейф, который хранит информацию. И самый лучший сейф, который в принципе может быть. Однако давайте будем помнить, что сейф в целом сам по себе не разряжается. И как бы иногда батарейка тает гораздо быстрее, чем можно в принципе подобрать пароль на этот телефон. Как все это ускорить и как все это сделать быстрее, расскажет наш следующий спикер Вячеслав Чикин из компании ACE Lab. Давайте встретим его аплодисментами.

[аплодисменты]

Вячеслав, на вас в общем и целом вся надежда. Прошу, вот ваш микрофон, кликер.

Доклад и вопросы

Добрый день, спасибо, Дмитрий. Продолжим тему паролей.

Ситуация складывается так, что мощности устройств растут, возможности растут. Если раньше 70%, а может быть даже и больше случаев, это были графические пароли. В крайнем случае небольшой пин-код. Сейчас с появлением распознавания лиц, отпечатков пальцев, и может еще что-то придумают, иногда случается так, что даже сами пользователи телефона забывают свой пароль. А зачастую придумывают очень много. Очень большие, сложные пароли, стандартная ситуация.

Человек не вводил пароль, и телефон его пробует ввести.

Особенно это распространено у подростков. Недавно сын пришел ко мне и говорит: пап, я забыл пароль. Сможешь подобрать? Пароль из восьми символов, думаю, ничего страшного, сейчас попробуем.

Комплекс подключил, телефон поддерживается нашим комплексом. В итоге день промучился, пока ничего не подобрал. Пришлось развивать эту тему.

Итак, для начала разберемся, что же мы можем использовать в качестве символов для паролей. Это у нас, собственно говоря, цифры, самый простой случай. Буквы английские в нижнем регистре, буквы английские в большом регистре и спецсимволы. 33 штуки, как было рассказано. И всего получается 95 возможных символов. Но это еще не все.

На некоторых телефонах можно вводить в качестве пароля спецсимволы различные. Точку можно ввести, буквы со штрихами, сердечки и все прочее. Скажем так, зумеры этим активно пользуются сейчас. И, соответственно, это надо учитывать.

Но здесь не все так сложно и грустно. Потому что если мы начнем ту же точку в качестве одного из символов используем, то она при подборе заменится на вот такие вот кавычки. Сердечко будет заменено на букву «Е». Можно вводить как сердечко, так и букву «Е». Это нужно учитывать. Но в то же время это вносит коррективы при создании масок подбора паролей.

К примеру, пароль человек может поставить «Иван любит Дашу».

В мобильных устройствах самый распространенный алгоритм, который используется, это SHA-256 и scrypt. Что касается SHA-256, здесь все понятно, существует и, скажем там, ASIC, которые можно попросить подобрать, ускорить пароли. Что касается scrypt, об этой теме мы сегодня чуть подробнее поговорим, потому что это основной алгоритм, который используется в мобильных телефонах.

Так, и в чем же, скажем так, основная сложность, даже скажем так, пакость scrypt — это то, что этот алгоритм очень сложно как-то ускорить и распараллелить, потому что он работает с памятью, то есть изначально некоторый блок данных и некоторая соль, абсолютно произвольно генерируемая, скажем так, попадает, назовем это так сейчас, в блок мутации, и из него комбинируется большой-большой блок данных, из этого блока данных потом произвольно, по алгоритму, выбираются блоки, из них считается хэш определенным образом, и в итоге получается наш scrypt, на основе которого мы осуществляем подбор пароля.

Так как здесь мы сразу видим две проблемы. Первая – это то, что мы активно используем память. То есть, к примеру, у нас на видеокарте может быть куча-куча-куча тысячи вычислительных ядер, но мы упремся в то, что мы съедим всю память в видеокарту графическую, и эти ядра там будут толкаться, драться за память, и никакое ускорение, никакой эффективности мы не получим. Второе узкое место этого алгоритма — это то, что, опять же, память. Это то, что все эти данные, произвольные запросы к памяти, они начинают толкаться в контроллере памяти. И, может, у нас там стоит суперкрутой современный процессор, но в узком месте, в контроллере памяти, все эти данные там у нас повиснут.

Итак, немного поговорим о параметрах scrypt. Первый параметр – это N, так называемый фактор стоимости. Это основной параметр scrypt. Здесь все написано, я не буду пересказывать. Это все можно будет сфотографировать. Впоследствии это будут доклады, все это можно будет посмотреть. Пока нам нужно понимать, что этот параметр, он очень сильно от него зависит. То есть чем выше это число, тем больше нужно памяти, тем сложнее процессору подбирать.

Вот уже как особенность указана, что удвоение значения N не просто удваивает время работы, а увеличит его примерно 4 раза. То есть r — это размер блока, это, собственно говоря, можно варьировать, если хотим, чтобы памяти было больше, меньше, на практике обычно оно 8.

p — это пока опустим, это если нужно распараллелить и учесть как-то распараллеливание алгоритма.

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

ASIC работают, ну это та же валюта, Dogecoin, она и другие, в принципе, они все работают по одному алгоритму scrypt с параметрами 1024.1.1.

Но это нужно всего 130 килобайт памяти. Поэтому все успешно майнится, валюты создаются, но для наших задач, к сожалению, это не подходит.

А у нас уже чуть-чуть интереснее задача. У нас уже параметры 2048.8.1.

Это для Android по файловому шифрованию. Это на современных телефонах, то здесь нам уже одно процессорное ядро или одно ядро видеокарты уже будет потреблять 2 мегабайта памяти. Плюс эти 2 мегабайта при произвольной выборке начнут толкаться в контроллере памяти. Соответственно, все это нужно учитывать. Для полнодискового шифрования, это для старых телефонов, нам уже нужно на одно ядро 32 мегабайта памяти. Если вы пользовались нашим комплексом, вы видели, что на старых телефонах пароль подбирается значительно дольше. Это связано с этим.

У нас тоже нашим комплексом потихонечку начинает поддерживаться распараллеливание. Мы погоняли на небольших, сделали сборки, попробовали подбирать пароли.

То есть у нас получились разные результаты для Windows и для Linux. Возможно, это из-за того, что по-разному устроена память. Надо будет посмотреть, как это оптимизировать. Но для Linux у нас получилось намного выше, в два раза, для процессора. Что касается видеокарт, там результаты одинаковые. Если посмотреть на нижнюю строку, то есть у нас есть, мы потестировали Ryzen 9 9950X, и Core Ultra. В принципе, у них, несмотря на разное количество ядер, результаты получились одинаковые. Мы еще это будем исследовать, но, скорее всего, мы предполагаем, что только раз мы уперлись в контроллер памяти. Тут стоит DDR5. Мы еще в дальнейшем будем экспериментировать. Пока результаты такие.

Видеокарта, кому будет интересно, 4060 Ti показала всего полторы тысячи паролей. То есть здесь логично спросить, что же выгодно использовать, видеокарты или процессоры. Ну тут, скажем так, у кого что есть. В принципе, можно подбирать на всем. В дальнейшем у нас будет возможность, то есть если в кабинете стоит 10 компьютеров, все можно задействовать на решение одной задачи.

Итак, вернемся. На основе того, что мы сегодня узнали, попробуем представить, что нам ожидать. Допустим, даже если мы более-менее нормальную машину соберем, она будет у нас 20 тысяч паролей в секунду. Там это будет либо два хороших процессора, либо видеокарт куча стоять. Чтобы пароль из восьми символов перебрать, нам потребуется целых 10 тысяч лет. Кто-то считает в степенях, мы предпочитаем считать в годах. Ну или в тысячелетиях пока что.

Если есть какие-то вопросы, я готов на них ответить.

— Большое спасибо. Так, коллеги, ага, и вижу сразу микрофон. Ой, руку. Микрофон у меня.

— Добрый день, спасибо за доклад. У меня вопрос о памяти, имеется в виду кэш процессора или оперативная память. Какая память задействуется?

— Здесь мы еще это будем исследовать, потому что, чтобы заставить… Сейчас я говорю только по CPU, не по GPU. Чтобы заставить работать с кэшем, там тоже есть определенные возможности, задачи. То есть надо определенный код писать на ассемблере.

Здесь мы пока еще так глубоко не опускались. Мы используем стандартные функции. И как они там раскидываются, мы пока не смотрим. Ну да, возможности использовать кэш, такие есть возможности. Но опять же кэш, он не сильно большой. То есть там даже если 2 мегабайта, то есть и на современных процессорах 24 ядра, то есть есть вероятность, что он очень быстро съестся. Да, какие-то потоки можно будет туда отправить, возможно, так оно и происходит. Ну, скажем так, это отдельная тема для исследований, конечно. Да, вопрос хороший.

Ну, такой, не вопрос, просто пожелание. Вот вы славитесь, всегда славились своим возможностью работы как раз с памятью, с устройствами, с процессорами. А вот типа мастер-пароль или что-то такое, вот в этом направлении не пытались копать? Ну, как вот в Windows взять пароль, сменить, так в телефоне сделать. Не пробовали? И не пытаетесь? Не совсем понял. Ну, смотрите, мы меняем пароль. У меня пользователь, я пароль на свой поменял и действую уже своим паролем. Вот так вот попробуйте, не можете? То есть не подбирать пароль, не брутфорсить, а сделать свой. Сделать свой пароль? Да, но с его данными.

— Ну, это сложно сделать свой пароль. Нет, ну это же не 10,5 тысяч лет. Может быть и легче будет? А, ну это уже я просто рассматривал с точки зрения аппаратной, а коллега перед этим рассказала, как сократить это время. Но для этого опять же есть словари, это уже дальше идет творческий процесс.

— Обходить? Ну обходить это сложно, это математика. Математику тут, как это, SHA тоже 256, очень простой алгоритм. Но до сих пор он не научились коллизии искать. Там целые майнеры, целые фермы, целые города строят коллизии искать.

Так, коллеги, еще вопросы? Если рук я больше не вижу, давайте проводим Вячеслава аплодисментами. Вячеслав, большое спасибо. Можно оставить все вон там на стенде. А мы с вами большие молодцы, потому что сейчас у нас к концу подошел первый блок нашего сегодняшнего первого дня мероприятия. И сейчас у нас будет довольно длительный перерыв, потому что, опять же, как я уже говорил, самое главное – это общение. У вас будет пообщаться целых 45 минут. Кейтеринг там уже, в общем и целом, накрыт. И в 12:05 мы встречаемся с вами в этом зале. Спасибо.

[В записи вырезан перерыв (по программе 12:00–12:30); таймкоды идут без разрыва.]