| [C++] White-box AES Implementation Generator | |
| От: | gear nuke![]() | ||
| Дата: | 30.04.08 03:52 | ||
| Оценка: | 21 (3) | ||
| White-Box Cryptography — относительно новое направление (основные применения — DRM и watermarking) в сети публикаций не так много, а готовые реализации, вероятно, можно вообще не найти. Данный генератор представляет скорее академический, чем практический интерес. Это не пример, как надо делать, а на тему "что это вообще такое". Исследования стойкости не проводились. Написан в 2004 году и сейчас является Public Domain (*). http://files.rsdn.ru/45067/aesig.zip
(*) Так как под рукой нет 2003 Студии, что бы собрать exe без ненужных хависимостей, в память о почившем в бозе заказчике оставлен copyrighted бинарник. Его использование может быть незаконно. People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth |
| Re: [C++] White-box AES Implementation Generator | |
| От: | CreatorCray![]() | ||
| Дата: | 30.04.08 09:20 |
| Здравствуйте, gear nuke, Вы писали: Я смотрю это походу то же самое что ты на краклабе выкладывал. Алгоритм по крайней мере тот же.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>> |
| Re[2]: [C++] White-box AES Implementation Generator | |
| От: | gear nuke![]() | ||
| Дата: | 30.04.08 09:44 |
| Здравствуйте, CreatorCray, Вы писали: CC>Я смотрю это походу то же самое что ты на краклабе выкладывал. Да, только это уже сам генератор, а не производный исходник.
Это твои комментарии? Сказать честно, после длительного перерыва, не вижу где в результирующем сорце все эти боксы. Вообще я несколько слукавил, "криптоанализ" был — закончилось на необходимости дезассемблера. Время слома оценили как неприемлимое для кряка для удовольствия. People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth |
| Re[3]: [C++] White-box AES Implementation Generator | |
| От: | CreatorCray![]() | ||
| Дата: | 30.04.08 10:56 |
| Здравствуйте, gear nuke, Вы писали: CC>>Я смотрю это походу то же самое что ты на краклабе выкладывал. GN>Да, только это уже сам генератор, а не производный исходник. Но генерит точно такой же код. GN>Это твои комментарии? Не, не мои. Просто почитал что он генерит и вспомнил что недавно где то это уже видел. Кстати надоб seed проинитить в начале. А то у тебя rand() всякий раз одно и то же выдает. GN> Сказать честно, после длительного перерыва, не вижу где в результирующем сорце все эти боксы. Я в анализе симметриков покуда себя лохом считаю, так что оценивать вообще не берусь. Просто было интересно решал ли ты описанные тогда недочеты. И были ли они на самом деле. ... << RSDN@Home 1.1.4 stable SR1 rev. 568>> |
| Re[4]: [C++] White-box AES Implementation Generator | |
| От: | gear nuke![]() | ||
| Дата: | 30.04.08 11:54 |
| Здравствуйте, CreatorCray, Дык там параметры в файле сценария указаны, можно поменять ключ и seed... в доке расписано даже CC>Просто было интересно решал ли ты описанные тогда недочеты. И были ли они на самом деле. Не решал. Там ни раундов, ни боксов в явном виде нет. В то время до этого просто не дошли, а сейчас что-либо делать именно с этим монстром ... People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth |
| Re: [C++] White-box AES Implementation Generator | |
| От: | 0xDEADBEEF![]() | ||
| Дата: | 30.04.08 17:04 | ||
| Оценка: | 1 (1) +1 | ||
| Здравствуйте, gear nuke, Вы писали: GN>White-Box Cryptography — относительно новое направление (основные применения — DRM и watermarking) в сети публикаций не так много, а готовые реализации, вероятно, можно вообще не найти. Данный генератор представляет скорее академический, чем практический интерес. Это не пример, как надо делать, а на тему "что это вообще такое". Исследования стойкости не проводились. Написан в 2004 году и сейчас является Public Domain (*). GN>http://files.rsdn.ru/45067/aesig.zip GN> GN>[q] О программе.GN>AESIG создаёт программные реализации алгоритма дешифрования AES, предназначенные для работы в условиях "White-Box". Посмотрел, что этот бинарник генерит. Вот выводы. 1) AESIG генерит ОГРОМНЫЙ бинарник — 1 мег. Мне кажется, что это неприемлемо. 2) В дизасембле (компиляция с -Fa или -S) структура раундовых функций rXXX() выглядит тривиально — доступна для автоматического реверсинга. Код выглядит примерно так:
3) Быстро проглядел сами исходники AESIG — мне кажется, если не компакный ключ, так развернутый ключ дешифрования извлечь оттуда можно. Но пока не уверен. 4) А если неможно, то декриптор все одно можно — просто скопипастив этот заобфускаченный мегабайт в отдельный бинарник. ЗЫ. Имхо, написать генератор декрипторов RSA который использует ембеднутный в коде ключ было бы более благодарной задачей. __________ 16.There is no cause so right that one cannot find a fool following it. |
| Re[2]: [C++] White-box AES Implementation Generator | |
| От: | gear nuke![]() | ||
| Дата: | 01.05.08 02:18 |
| Здравствуйте, 0xDEADBEEF, Вы писали: DEA>1) AESIG генерит ОГРОМНЫЙ бинарник — 1 мег. Мне кажется, что это неприемлемо. Основная проблема даже не это — далеко не каждый компилятор способен нормально его построить, когда писалось, не было вообще (GCC4 не считали, т.к тогда была альфа) в память о чем осталось
И, кстати, скорость тоже оставляет желать лучшего. DEA>2) В дизасембле (компиляция с -Fa или -S) структура раундовых функций rXXX() выглядит тривиально — доступна для автоматического реверсинга. Код выглядит примерно так: DEA>
При inline подстановке местами было лучше. Кстати GCC использовал CMOV. Да, декомпиляция этого довольно проста, поэтому лучше что бы дешифратор представлял некоторую виртмашину. И есть один нюанс — декомпилировать будут только в 2х случаях: солидная цена лицензии, или массовое применение. DEA>3) Быстро проглядел сами исходники AESIG — мне кажется, если не компакный ключ, так развернутый ключ дешифрования извлечь оттуда можно. Но пока не уверен. Однозначно можно, как и в любом стойком криптоалгаритме. Вопрос сложности, насколько это будет быстрее, чем брутфорс. Но у меня есть подозрение, что это реально для любых реализаций DEA>4) А если неможно, то декриптор все одно можно — просто скопипастив этот заобфускаченный мегабайт в отдельный бинарник. В таком виде — да. Есть направление куда копать — 2 последних раунда перемешаны, то есть использование расшифрованных данных предполагается внутри декриптора. DEA>ЗЫ. Имхо, написать генератор декрипторов RSA который использует ембеднутный в коде ключ было бы более благодарной задачей. Для ассиметрики обычно не имеет смысла прятать публичный ключ. Хотя, для защиты от кражи приватного ключа — lunch-time атак, взлома серверов может быть полезно. Из симметрики, на мой взгляд, наибольший потенциал имеет enrupt, в силу своей просты и универсальности. Но дело не в этом — раз появились мысли о более благородных задачах, значит мой пост выполнил свою цель People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth |