Pull to refresh

Comments 22

Есть вот такой документ, в котором описана атака по времени на RSA (на алгоритм Монтгомери).

А еще, недавно проводился NeoQUEST, и одним из заданий была как раз реализация описанной выше атаки по времени на алгоритм Монтгомери. Подробнее про задание и решение можно почитать в разборах участников, например, тут
Тайминг атака это миф. Еще никто ее не воспроизводил на вебсайтах
Может быть, в чистом виде (как у автора) это и миф, но вообще есть доволньо известный прием подбора пароля (или его хеша) при наличии blind sql injection, когда подается специальный запрос, посимвольно сравнивающим пароль с текущей догадкой и, например, ждущий сколько-то времени, если сравнение на текущем символе выдало true. Я в свое время смог ускорить этот процесс, подбирая хеш бинарным поиском.
это уже не тайминг атака (наблюдение за сайд показателями процесса) а обычное посимвольное угадывание (оракл).
Даже локально тайминг атаку невозможно воспроизвести. Вот у вас $var = '123qwe', подберите ее перебором и сравнениями.
Тайминг-атака, по-моему, и есть разновидность поэлементного угадывания.
Не соглашусь. если вы можете четко разграничить что слово начинается с 1 а не с 2 значит это оракл, а тайминг атака это когда вы делаете 100500 тестов и пытаетесь понять это 1 или 2
Мне кажется тут всегда будет проблема, если проверка пароля будет проходить на устройстве, которым одновременно пользуется несколько клиентов: веб-серверы, облачные системы и др., т.к. много факторов будет влиять на время ответа

Ну и как в окончании статьи указано: такой метод имеет место для оффлайн программ.
Ну да, тут задержка соединения по сети смажет разницу…
Это уже второй из прочитанных мной постов на тему того, что «вскрытие» шифров и тестов оказывается на поверку легче, чем кажется в начале (предыдущий был про прохождение онлайн-теста)…
На самом деле, это не более чем модифицированный вариант брутфорса, и главный его недостаток — требуется большое количество обращений к серверу, т.к. проверить потребуется каждый вариант.

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

В первом приближении, получается, что, при пароле длиной N и количестве допустимых символов, равном M, количество вариантов пароля будет N^M, что дает количество требуемых попыток T = N^M/2 (количество среднее, в лучшем случае мы подбираем пароль с первой попытки, в худшем — с последней).

Соответственно, при реализации данного метода, в общем случае нам требуется M/2 попыток, что бы подобрать каждый символ. Соответственно, для подбора пароля, длиной N, нам нужно T' = N*M/2 попыток. Следовательно, в общем случае получается, что время подбора пароля при атаке по времени в T/T' = 2N^(M/2-1)/M раз меньше, чем при прямом переборе.

PS Если напутал с математикой — прошу простить, я тут весь в простуде сижу на работе, особо считать нет ни сил, ни желания :)
Это, по замыслу, сильно оптимизированный вариант брутфорса) В посимвольном подборе пароля тоже есть немного брутфорса…
Метод однозначно очень интересный. Жаль, что в современных условиях тяжело его воспроизвести (особенно в интернете), поскольку наносекунды, которые процессор тратит на выполнения кода, просто тонут в задержках канала. Хотя, имея, например, доступ к ресурсу из локальной сети и достаточно времени, можна делать этот процесс в несколько потоков, тем самым «умножая» время, затраченное сервером на проверку байтов, и проверять масштабированные значения.
Обычно, если кто и производит атаку по времени, то для этих целей арендуют VPS или dedicated в том же дата центре, так что задержки получаются минимальными.
КМК, тут гораздо интереснее уменьшение количества попыток. Правда, тут будет сложнее распараллелить процесс.
а если сравнивать не пароли, а их хэши? md5 к примеру?
Хэш, в идеале, имеет нормальное распределение символов. Я чуть выше прикидывал, что и как получается.
Годная атака. На курсере в Cryptography I приводится в пример, как один из аргументов почему нельзя реализовывать алгоритмы шифрования/аутентификации самому. Из этой же области, атака power analysis. Кажется, мне попадались теоретические изыскания на тему как деанонимезировать пользователя Tor посредством timing attack.
В ssh еще вроде до сих пор существует уязвимость, позволяющая угадывать правильные логины методом перебора на основе timing-атаки.
И не только в ссш, кстати вроде зафиксили… Очень много систем, особенно если они имеют лдап аутентификацию. Причем такого рода брутфорс уже более реализуем в Интернете, хотя зависит от многих параметров)
Only those users with full accounts are able to leave comments. Log in, please.