А собственно кто-то читал статью по ссылке? Там вообще то описан метод расшифровки и шифрования данных, не имея ключа, а ориентируясь исключительно по ответам сервера. Каким образом из этого можно получить ключ — для меня неясно.
Кроме того для расшифровки/шифрования одного блока нужно выполнить 128*(размер блока) запросов к серверу. Это первое.
Второе: метод не зависит от выбранного алгоритма шифрования. Зато зависит от режима шифрования (потому что все используют CBC и надеются таким образом обеспечить не только шифрование но и подлинность данных). Если бы использовали CBC совместно с MAC подписью — таких проблем не было бы.
Учитывая, что и AES и 3DES — блочные шифры, нет разницы, какой из них использовать. .NET всё равно будет использовать режим шифрования CBC для подтверждения подлинности кук.
В общем, проблема действительно есть, но не та, которая описана в статье.
Точнее, даже не реализацию, а некорректное использование. Да ещё и с сигнализацией ошибки паддинга (согласно PKCS#5). Т.е. если ваш сервер будет прямо говорить, что в зашифрованных данных ошибка паддинга — то да, его взломают.
чуваки нашли уязвимость в использовании блочного шифра + CBC (тут 3DES не поможет, он тоже блочный, а Peter Vogel — фантастический идиот).
в их презентации есть примеры не только для ASP.NET, но и для RoR и JSF, так что ребята сеят панику прямо ковровым бомбометанием.
Но, оказывается, что для успешной атаки им надо знать, произошла ли ошибка из-за неверного паддинга(!), или по другой внутренней причине (например такой user id не существует или ip не тот).
Но вы же, как все здравомылящие люди, не оставляете в продакшене вывод ошибок в бразер, не так ли?
Теперь понятно, спасибо за ссылку на оригинальную презентацию.
Вообще-то идея сообщать о том, что паддинг неверный зря пришла в голову разработчикам, в любом случае. Это как в ответ на попытку расшифровать данные говорить о том, что столько-то бит ключа из 128 (например) неверные :-)
Проблема с безопасностью при использовании аутентификации формами в ASP.NET