Pull to refresh

Comments 7

Во всех проектах стараюсь хранить в куках только идентификатор сессии, а все данные, относящиеся к сессии — в хранилище на сервере.
А собственно кто-то читал статью по ссылке? Там вообще то описан метод расшифровки и шифрования данных, не имея ключа, а ориентируясь исключительно по ответам сервера. Каким образом из этого можно получить ключ — для меня неясно.
Кроме того для расшифровки/шифрования одного блока нужно выполнить 128*(размер блока) запросов к серверу. Это первое.
Второе: метод не зависит от выбранного алгоритма шифрования. Зато зависит от режима шифрования (потому что все используют CBC и надеются таким образом обеспечить не только шифрование но и подлинность данных). Если бы использовали CBC совместно с MAC подписью — таких проблем не было бы.
Учитывая, что и AES и 3DES — блочные шифры, нет разницы, какой из них использовать. .NET всё равно будет использовать режим шифрования CBC для подтверждения подлинности кук.

В общем, проблема действительно есть, но не та, которая описана в статье.
Я так и не понял, эти «Два исследователя безопасности» взломали Advanced Encryption Standard (AES)? За 50 минут??? Что за бред? :-)
Сломали некорректную реализацию CBC. Всего-то.
Точнее, даже не реализацию, а некорректное использование. Да ещё и с сигнализацией ошибки паддинга (согласно PKCS#5). Т.е. если ваш сервер будет прямо говорить, что в зашифрованных данных ошибка паддинга — то да, его взломают.
Вообще-то заголовок немного не соответствует действительности.

Прочитайте оригинальную презентацию: netifera.com/research/poet/PaddingOracleBHEU10.pdf

чуваки нашли уязвимость в использовании блочного шифра + CBC (тут 3DES не поможет, он тоже блочный, а Peter Vogel — фантастический идиот).

в их презентации есть примеры не только для ASP.NET, но и для RoR и JSF, так что ребята сеят панику прямо ковровым бомбометанием.

Но, оказывается, что для успешной атаки им надо знать, произошла ли ошибка из-за неверного паддинга(!), или по другой внутренней причине (например такой user id не существует или ip не тот).
Но вы же, как все здравомылящие люди, не оставляете в продакшене вывод ошибок в бразер, не так ли?
Теперь понятно, спасибо за ссылку на оригинальную презентацию.

Вообще-то идея сообщать о том, что паддинг неверный зря пришла в голову разработчикам, в любом случае. Это как в ответ на попытку расшифровать данные говорить о том, что столько-то бит ключа из 128 (например) неверные :-)
Sign up to leave a comment.

Articles