Перейти к содержанию
    

Какая производительность современных средств по отгадыванию пароля ?

Товарищи,

Я сообщаю человеку некое зашифрованное сообщение(AES, длина 16 байт). По условию задачи исходный текст сообщения он знает.

У него есть сильное желание узнать каким паролем зашифровано это сообщение.

Допустим я для шифрования использовал пароль 8 символов(цифры и латинские буквы в верхнем регистре) из которого я сделал хэш.

Хэш я предполагаю делать в цикле примерно так:

for (i=0; i<1000000; i++)
{
SHA256(buf);
}

На моем STM32H743 на вычисление этого миллиона хэшей уходит ~6 секунд. (Это предел по времени, больше уже нельзя).

Вопрос: Как бы понять сколько времени потребуется современному взломщику на подбор такого пароля на каком-нибудь современном железе(майнинговая ферма или чем они пользуются) ?

Например я прочитал в интернете, что NVIDIA RTX 4090 выдает 290 мега-хэшей в секунду. Много это или мало ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сугубо имхо - 
На обычном домашнем компе в разумное время реально расчитать до 5 байт брутфорсом.
На чем то заточенном - на пару порядков больше. Скажем, 8 байт.
Так что исходные 8 символов, тем более заглавными - имхо маловато, если использованные алгоритмы "врагу" известны.

Верхний регистр - это ASCII с 0x41 по 0x5A:  (26)^8 = ... за 14 дней и ваш STM32H743 справится.

ЗЫ: а энигма, говорят, погорела на всеми известном приветствии предводителю, которым оканчивалось каждое сообщение....
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, girts said:

На обычном домашнем компе в разумное время реально расчитать до 5 байт брутфорсом.
На чем то заточенном - на пару порядков больше. Скажем, 8 байт.

8 больше 5 на ДВА ПОРЯДКА?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, TOG сказал:

На моем STM32H743 на вычисление этого миллиона хэшей уходит ~6 секунд. (Это предел по времени, больше уже нельзя).

А почему так медленно? Получается: 480e6*6/1e6 = ~2880 тактов на 1 хеш. Вроде по документации заявлено, что должно быть ~66 тактов на 512бит. Т.е. - должно быть в ~43 раза быстрее.

Даже на моём XMC4500, не имеющем аппаратного вычислителя хеша, расчёт SHA256 от 128 бит данных занимает ~6548 тактов (без особой оптимизации). В вашем же МК есть аппаратный вычислитель. Неужто он так медленно работает???  :umnik2:

PS: Или вы программно считаете? Но - зачем??? На МК, имеющем аппаратный вычислитель....  :wacko2:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 hours ago, makc said:

Почитайте про PBKDF2 - https://ru.m.wikipedia.org/wiki/PBKDF2

Спасибо, makc. Интересная штука. Попробую освоить. Жаль ее нет в стандартной STM'овской криптобиблиотеке.

15 hours ago, girts said:

Так что исходные 8 символов, тем более заглавными - имхо маловато, если использованные алгоритмы "врагу" известны.

Верхний регистр - это ASCII с 0x41 по 0x5A:  (26)^8 = ... за 14 дней и ваш STM32H743 справится.

Спасибо, girts. По Вашей формуле получается 26^8 ~ 2e11 (примерно 209 млрд. возможных комбинаций). Но это без учета цифр. Вы же только  латинские буквы посчитали. Если использовать и цифры и буквы, то это уже 36^8 = 3e12 (2821 млрд. комбинаций).

То есть если видеокарта считает ~ 300 мегахешей в секунду, то:

За 1 секунду она сможет перебрать всего 300 паролей.

На 209 млрд. комбинаций уйдет ~ 8000 суток  = 22 года. (подбор пароля только из 8 заглавных латинских букв )

И ~ 100000 суток = 300 лет на подбор пароля из 8 заглавных латинских букв и цифр.

Наверно ферма из 10 тыс. видеокарт такую задачку решит и не подавится. 🤑

9 hours ago, jcxz said:

А почему так медленно? Получается: 480e6*6/1e6 = ~2880 тактов на 1 хеш. Вроде по документации заявлено, что должно быть ~66 тактов на 512бит. Т.е. - должно быть в ~43 раза быстрее.

Даже на моём XMC4500, не имеющем аппаратного вычислителя хеша, расчёт SHA256 от 128 бит данных занимает ~6548 тактов (без особой оптимизации). В вашем же МК есть аппаратный вычислитель. Неужто он так медленно работает???  :umnik2:

PS: Или вы программно считаете? Но - зачем??? На МК, имеющем аппаратный вычислитель....  :wacko2:

Спасибо, jcxz.

Программно считаю.

Да, в RM я вижу, что есть аппаратный вычислитель, но по факту его нет. Хорошо хоть CRC и RNG есть. Аппаратный крипто модуль похоже есть только в STM32H73x.

ST'шники наверно забыли мануал исправить. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, TOG сказал:

Да, в RM я вижу, что есть аппаратный вычислитель, но по факту его нет.

Почему? Вроде в errata ничего нет про неработающий HASH.... Он что по факту - не работает? В какой-то конкретной вашей ревизии чипа или во всех?

18 часов назад, TOG сказал:

Я сообщаю человеку некое зашифрованное сообщение(AES, длина 16 байт). По условию задачи исходный текст сообщения он знает.

У него есть сильное желание узнать каким паролем зашифровано это сообщение.

Допустим я для шифрования использовал пароль 8 символов(цифры и латинские буквы в верхнем регистре) из которого я сделал хэш.

И честно говоря - я так до сих пор и не понял смысла вашей темы...  :unknw:

Человек знает зашифрованное сообщение и результат его расшифровки? И хочет угадать пароль, которым шифровали?

Но какое отношение длительность вычисления хеша от 8-байтной строки имеет к длительности решения этой задачи??? Что мешает вам дополнить эту 8-байтную строку слева или справа константой любой желаемой длины (которую угадыватель не знает) и считать хеш от этого суммарного массива? И тогда угадывателю нужно будет перебирать не все значения вашей ASCII-строки, а все значения SHA256. Что он будет делать до морковкина заговення даже имея миллион видеокарт.

 

PS: Также я не понял - на кой вы, для генерации ключа AES из пароля, считаете миллион раз SHA256? Почему его нельзя посчитать один раз от "пароль+фиксированная_случайная_константа"? Ведь это будет в ~миллион раз быстрее, а не 6 секунд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, jcxz сказал:

Почему? Вроде в errata ничего нет про неработающий HASH.... Он что по факту - не работает? В какой-то конкретной вашей ревизии чипа или во всех?

image.thumb.png.45053cfa3b4c5918c86d134b50cc776d.png


У ТС 743.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, Arlleex сказал:

У ТС 743.

А, ясно блин - уродская документация STM... :negative:  Я скачал и просмотрел RM и errata для H743. Там ни слова не сказано, что HASH-а нет и в помине. Но пишут про него (как будто он есть). К стенке нужно ставить за такую документацию....  :aggressive:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, jcxz сказал:

А, ясно блин - уродская документация STM... :negative:  Я скачал и просмотрел RM и errata для H743. Там ни слова не сказано, что HASH-а нет и в помине. Но пишут про него (как будто он есть). К стенке нужно ставить за такую документацию....  :aggressive:

Нормальная документация, в даташите на 743 ни слова о hash/crypto

https://www.st.com/resource/en/datasheet/stm32h743vi.pdf

в 753, разумеется, есть

https://www.st.com/resource/en/datasheet/stm32h753vi.pdf

RM, как и всегда, дает общее описание периферии всей линейки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 minutes ago, jcxz said:

Человек знает зашифрованное сообщение и результат его расшифровки? И хочет угадать пароль, которым шифровали?

Но какое отношение длительность вычисления хеша от 8-байтной строки имеет к длительности решения этой задачи??? Что мешает вам дополнить эту 8-байтную строку слева или справа константой любой желаемой длины (которую угадыватель не знает) и считать хеш от этого суммарного массива? И тогда угадывателю нужно будет перебирать не все значения вашей ASCII-строки, а все значения SHA256. Что он будет делать до морковкина заговення даже имея миллион видеокарт.

 

PS: Также я не понял - на кой вы, для генерации ключа AES из пароля, считаете миллион раз SHA256? Почему его нельзя посчитать один раз от "пароль+фиксированная_случайная_константа"? Ведь это будет в ~миллион раз быстрее, а не 6 секунд.

Это продолжение темы про создание сервиса с арендой прибора. Этот сервис будет доступен на сайте, в мобильном приложении и на ПК. Поэтому ни какой секретности тут быть не может. Хацкерам даже сайт взламывать не придется, они просто дизассемблируют приложение для ПК например. А миллион раз вычислялется хэш, чтобы хацкеры получив от нас однажды код продления и  зная исходное сообщение не смогли быстро отгадать наш пароль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

30 минут назад, Arlleex сказал:

Нормальная документация, в даташите на 743 ни слова о hash/crypto

Дурацкая документация. Идея - лепить общий документ на совершенно разные чипы - сама по себе дурацкая.

Представьте если бы какой-нить Бош выпустил суммарную документацию на свои пылесос+стиралку+мультиварку+утюг. И вы, среди режимов стирки белья, искали бы как сварить суп. Или гадали бы: этот пункт "слив воды" относится к стиралке или к мультиварке или к утюгу? ....или и к тому и к другому и к третьему, но не к четвёртому?  :dash2:

30 минут назад, Arlleex сказал:

RM, как и всегда, дает общее описание периферии всей линейки.

В RM не должно быть разделов не относящихся к данному МК! Нажав кнопку "Документация" на сайте производителя на странице конкретного МК, пользователь должен получить документацию именно на этот МК, а не на какой-то другой. 

Вы видимо всегда работаете только с STM, поэтому видимо не подозреваете, что можно сделать по-другому, по-нормальному. В RM-ах NXP, TI, Infineon я что-то не припомню такого бардака как у STM. У Infineon МК линейки XMC4xxx по периферии очень похожи. Некоторая прям один-в-один совпадает. Но при этом Infineon не лепит их в один документ, а выпускает отдельно RM для XMC4500, отдельно - для XMC4700. Очень удобно. Зачем мне винегрет из кучи процессоров если я работаю с конкретным МК, а не со всем винегретом сразу?

А TI так и ещё дальше пошёл: для линейки Tiva например - для каждого корпуса МК (каждой аббревиатуры маркировки) - отдельный документ (даташит+RM)! И не надо гадать - есть эта функция в твоём МК или нет? Всё что описано - есть.

 

PS: Да - и ранее (для линейки F4xx) в RM STM, хоть и лепил уже вместе винегрет из разных МК, но по крайней мере в заголовке описания каждой периферии указывалось к каким именно МК этот раздел имеет отношение:

Цитата

23  Cryptographic processor (CRYP)
This section applies to STM32F415/417xx and STM32F43xxx devices.

Сейчас получается даже такого не делают..... :sad:

Почему я и ошибся с H743, потому как по привычке глянул в заголовок раздела HASH RM и не увидел там замечания об ограничениях на разные чипы линейки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

47 минут назад, TOG сказал:

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

Всё равно ничего не понятно.... :wacko2:  Зачем миллион раз то хеш считать? Если хацкеры взломали ваш exe-шник, то чем это поможет???

Думаете, что хацкеры умрут со смеху, увидев расчёт хеша миллион раз? И это обезопасит вас от них?  :biggrin:  

 

PS: Кроме того - надёжность такого вычисления крайне сомнительна сама по себе. Имхо - она по надёжности не должна превосходить надёжность однократного вычисления хеша. Так как - количество входных комбинаций данных это не увеличивает, то думаю можно построить функцию, которая даст результат, идентичный результату миллиона проходов SHA256, но за один проход.

Т.е. - функция будет тратить те же самые 3-7 тыс.тактов на вычисление одного хеша в степени миллион.

Как думаете - как можно ускорить алгоритм сложения числа X самого с собой миллион раз? Правильно - просто умножить его на миллион.  :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, jcxz сказал:

В RM не должно быть разделов не относящихся к данному МК!

Это Вы так думаете. А я (и не только я) нет - и мне удобнее иметь под рукой один мануал, а не горсть разных - у меня используются МК разных типов внутри одной и той же линейки от ST, и это помимо МК других фирм. И я замахался бы переключаться между даташитами, чтобы понять, насколько SPI STM32F427 отличается от F429 или F407.
 

28 минут назад, jcxz сказал:

И вы, среди режимов стирки белья, искали бы как сварить суп. Или гадали бы: этот пункт "слив воды" относится к стиралке или к мультиварке или к утюгу? ....или и к тому и к другому и к третьему, но не к четвёртому?  :dash2:

Сравнение некорректное. До такого маразма документация ST не доходит. Она исторически всегда придерживалась одного стиля ведения документации - даташит описывает конкретные особенности конкретной модели МК. RM описывает детально всю периферию всех моделей МК. Поэтому разработка становится простейшей - подбираешь МК по даташитам (в кубе быстрее), смотришь там, что все ок, а уже при программировании или при уточнении "скользких мест" смотришь в RM на конкретную периферию.
 

28 минут назад, jcxz сказал:

Вы видимо всегда работаете только с STM, поэтому видимо не подозреваете, что можно сделать по-другому, по-нормальному.

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

Цитата

У Infineon МК линейки XMC4xxx по периферии очень похожи. Некоторая прям один-в-один совпадает. Но при этом Infineon не лепит их в один документ, а выпускает отдельно RM для XMC4500, отдельно - для XMC4700. Очень удобно. Зачем мне винегрет из кучи процессоров если я работаю с конкретным МК, а не со всем винегретом сразу?

А если не очень похожи? Бегать между даташитами каждый раз сравнивать биты? Мне оно на кой? Я в пределах одного документа (иногда одной страницы) увижу особенности и отличия. И даже подозревать не придется, что что-то может отличаться.
 

28 минут назад, jcxz сказал:

А TI так и ещё дальше пошёл: для линейки Tiva например - для каждого корпуса МК (каждой аббревиатуры маркировки) - отдельный документ (даташит+RM)! И не надо гадать - есть эта функция в твоём МК или нет? Всё что описано - есть.

В итоге имеем 100500 документов с почти одним и тем же содержимым. А если где-то есть отличие, то при беглом взгляде его хрен увидишь. А потом, как это обычно бывает, замыленный глаз смотрит совершенно не в тот даташит и из-за отличий в камнях программирование идет поперек борозды, теряя дни отладки.
 

28 минут назад, jcxz сказал:

Сейчас получается даже такого не делают..... :sad:

Это следствие кубов, КМК. Никто сейчас в даташиты не смотрит при разработке железа - в кубе накидали периферии нужной, посмотрели, влезает в выбранный проц или нет - поехали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 минут назад, Arlleex сказал:

А потом, как это обычно бывает, замыленный глаз смотрит совершенно не в тот даташит и из-за отличий в камнях программирование идет поперек борозды, теряя дни отладки.

......или точно такой же глаз смотрит в RM, видит там несуществующий в данном камне регистр периферии, и точно так же программирование много дней "идёт поперёк борозды", теряя дни...  :biggrin:

PS: Честно говоря мне кажется странной ситуация одновременного программирования двух разных прошивок. Обычно всё-таки: сперва пишется какой-то блок кода в одной прошивке; и потом переключаемся на другую, где так же пишем блок кода. И "блок" - это более-менее функционально законченный кусок кода. А не одна строчка.

Я тоже писал две разные прошивки примерно в одно время. Или прошивку, которая будет компилироваться на разных МК. Но это было не в стиле: "написали строчку для одной прошивки, через минуту - для другой". Особенно - в части программирования железа (низкоуровневое). Да, бывает отладка протокольного взаимодействия двух ПО идёт подобным образом. Но к этому моменту всё железо уже проинициализировано и код работы с ним написан и отлажен (по отдельности). Смешивать разбирательство с низкоуровневой периферией и протокольную обработку - само по себе не гуд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...