Группа учёных из массачусетского, колумбийского, техасского и калифорнийского университетов предложила (http://newsroom.ucla.edu/portal/ucla/ucla-computer-scientist...) новый способ (PDF (http://eprint.iacr.org/2013/451.pdf)) запутывания кода программного обеспечения (obfuscation), с целью приведения его к нечитаемому виду, непригодному для восстановления алгоритма работы. В отличие от применяемых ныне методов запутывания кода новый способ оперирует техникой функционального шифрования, что не даёт возможности провести обратный инжиниринг и восстановить хотя бы в общих чертах суть закодированного приложения.
Код преобразуется в зашифрованное на уровне функциональности представление, остающееся работоспособным, но требующее для восстановления исходного вида решения математической задачи, выполнение которой на современных компьютерах потребует нескольких сотен лет вычислений. Используемое при математическом преобразовании кодирование преобразует изначальный код в последовательность цепочек, напоминающих математический пазл. Созданный пазл пригоден для выполнения - закодированная программа остаётся полностью функциональной, но для того чтобы восстановить общую картину и понять логику организации работы требуется сложить все элементы пазла, те просчитать все исходы возможной функциональности, что является непосильной для современных компьютеров задачей.<center><a href="http://newsroom.ucla.edu/portal/ucla/artwork/4/7/5/2/7/24752... src="http://www.opennet.me/opennews/pics_base/0_1375470183.jpg" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></a></center>
URL: http://newsroom.ucla.edu/portal/ucla/ucla-computer-scientist...
Новость: http://www.opennet.me/opennews/art.shtml?num=37587
Удивительная новость на ресурсе, посвященному опенсорсу.
"Врага надо знать в лицо".
Они что, полиморфные вирусы изобрели? Мне кажется, вирусописатели придумали подобные трюки лет 20 назад. Как раз с подобной целью. Что от аверов их все-равно не особо спасло. Не получается влобовую - изучат вызовы и поведение в целом. Не идеально, но достаточно для понимания что за хрень и как с ней бороться.
Нет. Основной код полиморфа выполняется в расшифрованном виде. Дешифратор заполняется мусором и антиотладочными трюками. Две копии вируса не похожи друг на друга, но если перехватить момент дешифрации, то получаем чистый код основной части вируса.А в данном случае дешифрации вообще не происходит ни на каком этапе. Код всегда остается "зашифрованным"(это не правильный термин ибо суть совсем в другом), но тем не менее при исполнении дает правильный результат. И никаких антиотладочных трюков и мусора, они здесь просто не нужны.
Так что ничего общего с полиморфами данное исследование не имеет. Но тем, кто хочет понять о чем ребята говорят, придется серьезно налечь на матан и функан.
Есть полиморфные вирусы которые не только дешифратор, но и "полезную" нагрузку генерируют с мусором. Но в целом вы правы.
> Нет. Основной код полиморфа выполняется в расшифрованном виде.Половина полиморфиков кроме этого еще и густо разбавляет "полезный" код "бесполезным" крапом (суммарный эффект от которого равен нулю). Что очень доставляет антивирусным аналитикам и антивирям, которые более не могут детектировать код по шаблону :)
> Дешифратор заполняется мусором и антиотладочными трюками.
У половины полиморфиков нет никакого "дешифратора": при порождении очередной копии бяка просто берет саму себя и креативно добавляет кучу дряни в код. Суммарный эффект этой дряни, разумеется, равен нулю. Но поди там разберись что в этой копии полезный код, а что такая вот дрянь. На коде не написано для чего он там запихан. И как-то совсем не очевидно что вот эти 5 команд и вон те 10 команд через 20 килобайт кода - взаимно компенсируются по тихому.
Так что похоже что граждане академики выступили Капитанами и просто озвучили трюки придуманные 20+ лет назад авторами более-менее приличных полиморфиков.
> друга, но если перехватить момент дешифрации, то получаем чистый код основной части вируса.
См. выше - фокус с впихиванием уймы постороннего кода и отсутствием какой либо дешифровки известен уже весьма давно. Некоторые полиморфики даже умудрялись отполиморфить уже обработанную копию. Которая при этом дополнительно распухала но общая логика, разумеется, не менялась. В результате были иногда довольно жирные экспонаты, которые сами себя разбавили мусором несколько раз. Могу себе представить какой кайф для авера получить экспонат на мег кода, где несущего смысл кода - 5Кб, а остальное - ничего не значащие команды, суммарный эффект которых по факту равен нулю, только об этом никто не знает кроме полиморфного генератора в момент генерации, который это скомпоновал :)
> А в данном случае дешифрации вообще не происходит ни на каком этапе.
См. выше.
> Так что ничего общего с полиморфами данное исследование не имеет.
Нормальные полиморфики именно так и работали всю жизнь.
Ты новость читал? Тогда в сад, писатель.
> Ты новость читал? Тогда в сад, писатель.Как раз почитал. И понял что это подозрительно напоминает мне трюки авторов полиморфиков 20-летней давности...
> Нормальные полиморфики именно так и работали всю жизнь.ты попутал полиморф и метаморф. вот метаморфы как раз и переписывают себя; причём эксперименты с переписыванием так, чтобы не просто было непохоже, а реально тасовались и пути исполнения, и частично даже алгоритмы — были. упёрлись, правда, в то, что размеры получаются совершенно неприличные, и на асме это писать задолбаешься.
>Они что, полиморфные вирусы изобрели?Нет. Всего лишь Perl.
>Нет. Всего лишь гвидобейсик.Исправил, не благодари
Это враги из параллельной вселенной. GPL такой код не пройдет, а у BSD никому и вовсе не сдался. А пропирасты пусть перед друг другом выпендриваются.
А Вы уверены, что GPL подобный код не пройдёт? Американский суд может решить иначе.
В апстрим-то он точно не попадёт, потому что не пройдёт review :-)А вот в микрософте очень обрадуются.
> А вот в микрософте очень обрадуются.Да, микрософту это подойдет. Если код, созданный микрософтом, гарантированно никто никогда не сможет прочитать, это будет благом для сообщества. Ибо незачем растлевать неокрепшие умы.
а как тебе неломаемые игры/программы?
> а как тебе неломаемые игры/программы?Ура! Превратятся в покупаемые! :)
Непокупаемые.
Так это же и хорошо. Может хоть небольшая доля людей задумается о свободной альтернативе. Если, конечно, они действительно станут не ломаемые, в чем я сомневаюсь.
> а как тебе неломаемые игры/программы?Не ломается только компьютер который забыли включить. Все остальное - весьма зависит от.
> Не ломается только компьютер который забыли включить.Ломается! Еще как ломается! Вот его выключили, несколько лет не включали, потом попробовали включить - а он, собака, не включается! Поломался! ;)
Так не бывает. Если нельзя модифицировать программу модифицируют окружение в котором она запускается.
> а как тебе неломаемые игры/программы?В описываемой методологии не сказано, во сколько раз замедляется исполнение зашифрованного кода, так что в играх сильно вряд ли.
хм, взять gpl-код, засунуть в проприетарный продукт, вот так обработать... только интересно, что там от быстродействия остаётся
> хм, взять gpl-код, засунуть в проприетарный продукт, вот так обработать...А вот это - реальная опасность. Плюсанул. Реальная возможность проприетарщикам воровать открытый код и эффективно прятать улики. Возможно, это и является целью проекта.
> Это враги из параллельной вселенной. GPL такой код не пройдет, а у
> BSD никому и вовсе не сдался. А пропирасты пусть перед друг
> другом выпендриваются.Пишешь программу, шлепаешь лицензию GPL или BSD, исходники нате пожалуйста и продаешь по $9.99 каждую копию.
> Пишешь программу, шлепаешь лицензию GPL или BSD, исходники нате пожалуйста и продаешь
> по $9.99 каждую копию.Не получится, ты быстро обанкротишься, продашь квартиру и почку и станешь бомжом.
Почему сразу враги? Если отпетые проприетасты внезапно начнут выпускать люто тормозящие программы, то это ж гут.
Сейчас выстрелит BSD? :)
> Сейчас выстрелит BSD? :)У них наверняка пистолет еще не готов. И вообще, при попытке выстрелить окажется что надо изобрести порох, придумать пули, сбилдить пистолет, и вот тогда, через пару столетий, можно стрелять.
Зато, когда изобретут, это будет гасс-пушка, в то время как остальные будут с рогатками бегать.
> с рогатками бегать.Вы только забыли уточнить что с рогатками они будут бегать лишь потому что доигрались с ядерным оружием и устроили reboot своей эволюции случайно :)
> доигрались с ядерным оружием и устроили reboot своей эволюции случайно :)Но это не отменяет того факта, что у нас будет "гасс-пушк" (wtf? это типа пушка Гаусса? Не важно, проще говоря, вундервафля), а вас - рогатка.
> Но это не отменяет того факта, что у нас будет "гасс-пушк" (wtf?
> это типа пушка Гаусса? Не важно, проще говоря, вундервафля), а вас - рогатка.Ну да. Правда не в этой жизни. Или в параллельной вселенной. А так все ничего.
> Но это не отменяет того факта, что у нас будет «гасс-пушк» (wtf?
> это типа пушка Гаусса? Не важно, проще говоря, вундервафля), а вас
> — рогатка.фигня, правда, в том, что к этому времени не останется электростанций, способных заряжать ваши аккумуляторы. и потому пушкой можно будет максимум бить соседа по голове.
Проблема еще и в том что нужда стрелять обычно приспичивает в момент когда на тебя прется какой-то хмырь, не слишком дружественный и уж конечно не собирающийся ожидать пока некто закончит сборку пистолета.
> Зато, когда изобретут, это будет гасс-пушка, в то время как остальные будут
> с рогатками бегать.США рельсотронами оснастит суда к 2020, а вы да, будете бегать с рогатками
> США рельсотронами оснастит суда к 2020, а вы да, будете бегать с
> рогаткамирельсотрон не панацея.
> рельсотрон не панацея.Ну учитывая дальность и пробиную силу, с развитием систем наведения можно будет подойти за пределы действия береговых батарей и вынести их :)
А теперь представь какого размера аналогичную пушку можно разместить на берегу
Проблема не в размере пушки, а в скорости сгорания пороха. Так что ресольтрон — это перспективное оружие.
>> Сейчас выстрелит BSD? :)
> У них наверняка пистолет еще не готов. И вообще, при попытке выстрелить
> окажется что надо изобрести порох, придумать пули, сбилдить пистолет, и вот
> тогда, через пару столетий, можно стрелять.Помнится про Linux что-то похожее говорили в своё время (:
Все нормально. Запутать необратимо код, а потом открыть исходники под GPL. Изучайте, модифицируйте, используйте. Все условия соблюдены.
> Все условия соблюдены.Ага, щаз. Было мнение что обфусцированный код - исходниками не является.
Разумеется, очень обоснованное мнение. Судьи в США также считают?
> Разумеется, очень обоснованное мнение.Ну это мнение FSF и их юристов.
> Судьи в США также считают?
Ну если вы хотите проверить - идите и попинайтесь с FSF в суде. Как раз и узнаете как считают судьи.
> Разумеется, очень обоснованное мнение.
> Ну это мнение FSF и их юристов.позвольте - а как же на счет обфускации патчей ядра со стороны RedHat ?
>> Разумеется, очень обоснованное мнение.
>> Ну это мнение FSF и их юристов.
> позвольте - а как же на счет обфускации патчей ядра со стороны
> RedHat ?Дурачок, нет там никакой "обфускации". Это тебе с твоими дружками-ламерами из оракла всё что сложнее helloworld.c кажется "обфускациями.
P.S. Неоднократно выбирал одиночные коммиты/фиксы из RHEL'овских патчей. Это несложно - может, потому что я в школе учился, а не в оракловской-майкрософтовкой бурсе для дибилов, как ты?
Вот, кстати, повод задуматься о cледующей версии GPLv3.1
> обфусцированный код - исходниками не является.Не «обфусцированный», а МИНИМИЗИРОВАННЫЙ ! :)
Для вашей же пользы, чтоп быстрее исполнялся :)
> Не «обфусцированный», а МИНИМИЗИРОВАННЫЙ ! :)В случае компилируемых исходников это никак не влияет на скорсоть исполнения. Там компилер покруче минимизацию выполняет своим оптимизатором.
> Для вашей же пользы, чтоп быстрее исполнялся :)
Ну да, я и заметил - все те кто юзает суперсвободные бсди чтобы показать мне фигу так заботятся о моем удобстве. Поэтому я откровенно предпочитаю девайсы с линухом - я лучше знаю как мне удобнее, вот извините.
Если описанное преобразование является криптографичски стойким, то полученный код будет практически неоптимизируем. Соответственно, программа, скомпилированная из обработанного исходника, будет работать в разы медленнее нормальной (если вообще будет работать), и обработанный код уже не сможет считаться исходником нормальной программы.
> Если описанное преобразование является криптографичски стойкимСо половинкой ключа, сданной в ...
>> обфусцированный код - исходниками не является.
> Не «обфусцированный», а МИНИМИЗИРОВАННЫЙ ! :)
> Для вашей же пользы, чтоп быстрее исполнялся :)Ты, похоже, спутал понятия - обфусцированный, минимизированный, оптимизированный. Быстрее будет исполняться только в последнем случае. Запиши цикл, исполняемый, скажем 3 раза, в виде последовательно исполняемых блоков. Исходный код увеличивается, но быстродействие повышается за счет исключения ряда операторов.
"The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work." -- https://www.gnu.org/licenses/gpl-3.0.en.html
Значит придёт время GPL4 с запрещением обфуркации.
> Значит придёт время GPL4 с запрещением обфуркации.Да вообще-то оно не проходит и с 2/3 уже. Так, по мнению юристов.
Удивительна она еще тем, что автор не знаком с русским языком.
Я думаю, что как раз весьма актуальная для open source штука. Если всё так, как они говорят.
> Удивительная новость на ресурсе, посвященному опенсорсу.Да, не стоит смотреть дальше своего носа...
Закройте глаза, заткните себе уши и старайтесь не замечать обратных тенденций..
Речь идёт о запутывании программы на уровне _исходного текста_ или на уровне _машинного кода_?
> Речь идёт о запутывании программы на уровне _исходного текста_ или на уровне
> _машинного кода_?Речь идёт о запутывании программы на уровне исходного текста так сильно, что машинный код из такого текста получается ещё более запутаным, но каким-то чудом всё-равно работает
Фотография справа какбэ намекает на производительность и стабильность конечного решения.
Индусу просто очень хочется кушать хлеб с маслом.
Все алгоритмы давно известны, а мимолетная блобопроприетарщина пусть идет в /dev/null
Посоны расходимся - пишут что лажа, практически не применить, накладные расходы огромные.
Дисятки гигов оперативки?)Это похоже на scrypt ))
Скорее на java.
А где пишут? Можно линк?
Чем это лучше боянной обфускации на конечных автоматах?
> Чем это лучше боянной обфускации на конечных автоматах?Генрация больших кусков навоза внутри кода
> Генрация больших кусков навоза внутри кодаПо-моему, у полиморфных фирусов еще из-под баянного доса это уже давно проблемой не являлось. И да, это как раз ставило целью создать миндфак аверам. Те чертыхались, скрипели, но все-равно более-менее понимали как это работает и добавляли это в свои базы :).
Сорри, не совсем в курсе, но добавлю одно предположение.
Перевод гиперболического шифрования на язык конечных автоматов позволяет выделить классы ненадежных кривых. Вероятно обфускация на конечных автоматах может быть более верифицируема - и, возможно, доказано нерасшифруема иначе как брутфорсом.
Смотреть их пруфы в статье у меня квалификации не хватает.
Вспоминается что МС как-то подписалась с кем-то из Скандинавии (ПрологЛабс или похоже) на криптинг ДЛЛек в виртуальные машины. Т.е. такое сабджевое уже не первый год (
Скоро бинарники будут все более монолитными и хрен реверсируемыми - DRM, виртуалка и полная обфускация + привязка с прошивкой.
> Скоро бинарники будут все более монолитными и хрен реверсируемыми - DRM, виртуалка
> и полная обфускация + привязка с прошивкой.И закончится все это тем что оно само помрет под натиском опенсорса.
Как бывший реверсер могу отметить что глупо ломиться в железную дверь с крутыми замками, если она стоит в чистом поле. Можно просто взять и обойти. Это намного проще :).
Бывший реверсер и вдв-шник. И это в 15 лет. Угу-угу.
> Бывший реверсер и вдв-шник. И это в 15 лет. Угу-угу.Ну подумаешь, ошибся в пару раз. Форумным аналитикам простительно.
Эй, аналитик, "какая вероятность того что я на улице встречу динозавра?" :)
> Эй, аналитик, "какая вероятность того что я на улице встречу динозавра?" :)Не выходя на улицу? Околонулевая. В противном случае — что-то около ста процентов. Современная наука считает, что все птицы — динозавры. Попробуй пройтись по улице, не встретив ни одного голубя :)
>Современная наука считает, что все птицы — динозавры.альтернативно одарённый представитель науки?
Нет, просто лучше-чем-лично-ты осведомлённый человек.
>> Эй, аналитик, "какая вероятность того что я на улице встречу динозавра?" :)
> Не выходя на улицу? Околонулевая. В противном случае — что-то около ста
> процентов. Современная наука считает, что все птицы — динозавры. Попробуй пройтись
> по улице, не встретив ни одного голубя :)Вранье. Не 100, а только 50 - то ли встретишь, то ли нет.
> гиперболического шифрованияКонечно же эллиптические кривые. Как же я налажал )))
> Чем это лучше боянной обфускации на конечных автоматах?Чем грузины.
зачем, ведь есть Perl
> Perl — это тот язык, который одинаково выглядит как до, так и после RSA шифрования… — Keith Bostic
> зачем, ведь есть PerlУчастники obfuscated C code contest считают вас галимым скрипткидисом, а поклонники брейнфака - просто малодушным слабаком.
Посмотрите результаты этого конкурса:
http://www.askdev.ru/question/1969/Code-Golf-%D0%B.../
Написано живыми людьми и без всякой обсфуркации. При этом рефреном звучат комментарии: "а как это работает"? Я вот сейчас глянул - не скажу, чтобы собственное решение показалось мне понятным ;)
> Участники obfuscated C code contestгореть тем в аду кто код на С обфускацией гадит
> гореть тем в аду кто код на С обфускацией гадитДа ладно, специально обгаженый код бывает прикольным. Например одним большим палиндромом, или там еще чем.
>..задачи, выполнение которой на современных компьютерах потребует нескольких сотен лет вычислений.Умный в гору не пойдёт - умный гору обойдёт.
>> Умный в гору не пойдёт - умный гору обойдёт.Скорее толстый
Спасибо за светлое будущее.
Я так понимаю, что никто из этих ученых никогда не ковырялся в машинном коде?
Или код так будет зашифрован, что даже процессор его будет выполнять не понимая, что выполняет?Непонятно, зачем еще запутывать программный код, если нижний уровень это машинные коды (ассемблер). Ну, не хочешь отдавать исходники - не отдавай.
>даже процессор его будет выполнять не понимая, что выполняет?Вообще-то да.
> Непонятно, зачем еще запутывать программный код, если нижний уровень это машинные коды
> (ассемблер). Ну, не хочешь отдавать исходники - не отдавай.При чем тут исходники? У вас заело?
Данный метод в первую очередь предназначен для защиты от взлома программ. И он уж всяко будет сильнее, чем ASPack и Themida.
> он уж всяко будет сильнее, чем ASPack и Themida.Авторы полиморфной вирусни похожие по смыслу трюки придумали лет 20 назад.
Я вас разочарую, но обфускация предназначена как раз для защиты исходного кода и алгоритма.
Что вы вносите в понятие "взлом программы" тоже не совсем понятно.
>Или код так будет зашифрован, что даже процессор его будет выполнять не понимая, что выполняет?Он всегда так делает. Что дали то и выполняет.
> даже процессор его будет выполнять не понимая, что выполняет?ты, наверное, удивишься, но именно так и происходит *абсолютно со всем машинным кодом*. процессор реально ничего не понимает, потому что это каменюка, и «понималкой» не наделена.
Кто-нибудь что-нибудь понял из этой запутанной чуши? Есть предположение, что смысл новости уже зашифрован "на уровне функциональности"
"Представлен неподдающийся пониманию метод запутывания новостей" - это Вы имели в виду?
Я, например, понял. И я не удивлён, что ничего не поняли Вы.
>Для восстановления исходного вида требуется решение мат задачиА никого исходный вид не интересует. Берём отладчик, генерим асм, выбрасываем мусор
Смысл в том, что теперь такое западло можно называть СПО.
> Смысл в том, что теперь такое западло можно называть СПО.А белое можно называть черным. Лжецам и лицемерам невпервой.
> А никого исходный вид не интересует. Берём отладчик, генерим асм, выбрасываем мусорНу что, очередной школьник? Фишка блин в том как раз, что "мусор" не выбросить.
> не выбросить.Выбросить, но - с неимоверной затратой ресурсов на "оптимизацию" кода. В чем, собственно и пойнт. В общем то любой уважающий себя полиморфик к этому всегда стремился :).
> выбрасываем мусорТам только мусор
Хорошо зашифровали, дальше что, система как то должна понимать этот код. Ладно научили понимать зашифрованный код через программный или аппаратный уровень. Но почему в новости нет информации о том как это шифрование сказывается на производительности конечного результата. Да и никто не может исключить ошибку в алгоритме которая позволит с периода сотен лет сократить процесс до считанных дней. Такое уже происходило неоднократно с многими алгоритмами шифрования, которые тоже начинались со слов, для этого алгоритма требуется сотни лет. Человеческий фактор исключить нельзя даже у группы ученных
Это да, лень - штука такая.
"При использовании метода, код программы преобразуется в зашифрованное на уровне функциональности представление, при котором зашифрованный код остаётся исполняемым"
Мутатень всё это, алгоритмы и шифры уже ломают лазерами....
Та же IBM хакала то ли ГОСТовский шифр, то ль кого-то из *Fish_ей
через расчёт потребления мощности на кристалле.
Очень интресно. Можно ссылочку?
Пожалуйста. Из свежего https://media.blackhat.com/us-13/US-13-OFlynn-Power-Analysis... и https://media.blackhat.com/us-13/US-13-OFlynn-Power-Analysis...
Спасибо за интересные ссылочки про побочные каналы.Но, хотелось узнать, как можно лазером сломать алгоритм. %)
>алгоритмы и шифры уже ломают лазерами....
> Спасибо за интересные ссылочки про побочные каналы.
> Но, хотелось узнать, как можно лазером сломать алгоритм.Лазером низя, как и отладчиком.
А вот воспользоватся результатами работы этих приборов - можно.Как я понял суть была в том, что на микруху приклеивают некий кристалл,
из какого-то материала, который под действием ЭМИ от микрух искривляет
луч лазера. Ну и на выходе эти параметры сравниваются с начальными.Программно задают некие шаблоны шифруемого текста (например все нули или единицы),
и изучают отклонения на всём периоде шифрования. В том шифре строго на 6-ом и 17-ом (цифры не точные)
раундах, возникали скачки ЭМИ. Как дальше это использовали не писали.Но по любому, отклонение от равномерной работы алгоритма в шифре - это провал. :)
Спасибо за столь подробный ответ. Кристалл - это серьезно. 8)
а если я в как-бы ящике виртуалку другую обфусцирую то я интелект прячу да ??
Ваш интелект не спрячешь.
Это похоже на гомоморфное шифрование?
да, нечто близкое
а давайте так зашифруем весь интЫрнет (МС)
Дали бы примеры кода зашифрованного и нет.
> Дали бы примеры кода зашифрованного и нет.Все говорят "дали бы", а ты _купи_!
Оригинал статьи не читал. Как я понял, код будет зашифрован в исполняемый код некоей виртуальной машины, внутри которой текущий код тоже нужно будет преобразовать, чтобы получить реальное исполнение для ВМ, а потом выполнить. Кто читал подробно, скажите, так?
Могу предположить, что сама ВМ тоже является одним из вариантов текущей ВМ и поэтому выявить алгоритм самой ВМ в общем виде будет не такой простой задачей.
> Оригинал статьи не читал. Как я понял, код будет зашифрован в исполняемый"Не читал, но осуждаю" (с)
Правильно говорить: "Пастернака не читал, но осуждаю"
> Правильно говорить: "Пастернака не читал, но осуждаю"Я в курсях, как правильно. Все поняли.
Ничего в pdf'ке интересно, -- они рассматривают топологию скотта и делают её гомеоморфное преобразование с рандомизацией. Фактически неявно опираются на предположение, что NP/=P. Скука..
Не понял причины негативного отношения к новости. Как сабж вредит (делу) СПО?
> Не понял причины негативного отношения к новости. Как сабж вредит (делу) СПО?Эти недоумки своим существованием СПО вредят. А прыгать с крыши никак не желают.
название pdf-файла напомнило роман, где пожарники из-за тоталитаризма книги жгли.
А там не любую функцию можно спрятать, а вроде только из класса NC
http://en.wikipedia.org/wiki/NC_(complexity)
>Our first result is a candidate construction of an indistinguishability obfuscator iO for all polynomial-size,log-depth circuits (i.e. NC)
Не?
А че там с производительностью таких программ? На скорость выполнения кода оно влияет или нет?
ад наступает
> ад наступаетМы все умрем! (с)
Круто, круто... Да уж, кто за что борется.
Пора пилить GNU GPL v4
Зачем? Еще в GPLv2 явно указано, что "source code for a work means the preferred form of the work for making modifications to it." Код, который любым способом был переведен в неудобочитаемый (и тем более нечитаемый вовсе) вид, под это определение не попадает ни разу.
здорово! молодцы!...но всё равно я не понял -- что за значения нужно подставлять вутрь переменных ---- a[..], g, e[..], z[..]
Пусть пусть запутывают. Вследствие этого проприетарщина станет ещё более тормозной и непотребной.
> Пусть пусть запутывают. Вследствие этого проприетарщина станет ещё более тормозной и непотребной.А еще за нее деньги платят. А вот патчи к линю в уплату - увы и ах! - не принимают нигде.
> А еще за нее деньги платят. А вот патчи к линю в
> уплату — увы и ах! — не принимают нигде.этот текст следует понимать так, что ты можешь в магазине за пиво виндой расплатиться? ну-ну, удачи.
а если понимать так, что платят разработчикам и продавцам, то погугли по двум словам: «red hat». и перестань уже нести свою чушь.
кстате в пивном магазине -- я даже фарами от автомобиля врядле смогу расплатиться за пиво :)..ну или там -- металлическими дорожными знаками :-) :-)
> кстате в пивном магазине — я даже фарами от автомобиля врядле смогу
> расплатиться за пиво :)
> ..ну или там — металлическими дорожными знаками :-) :-)если магазин не очень большой, то дорожным знаком можно попробовать. но я советую не очень большую удобную арматурину.
Ну вот, а потом удивляемся, почему нынешние %@цать гигабайт оперативы, и 16 ядер не хватает, что бы нормально, быстро и плавно работала винда.
Конечно, когда каждая функция в коде будет выполнять(или уже выполняет) лишнюю крипто-работу, мол "главное что бы не заметили что код ворованный".
Любители по-воровать у GPL, возрадуются.
посоны, не парьтесь! есть и положительная сторона можно таким макаром стеганографии рвать одну программу в другую, например фс с криптоконтейнером в майнсвипера и хрен кто докажет что на компе вообще есть криптоконтейнер
извините за неровный почерк - пишу с кофеварки
друзья мои, а никто не задумывался, как это пропирастические программеры будут отлавливать баги в своих зашифрованых поделтях или принимать от пользователей бан-репорты? Если такое шифрование сделает практически недоступным отладку, то и применять шифрование не будут или поделия спросом не будут пользоваться вообще.
Баг-репорты! Опечатался.
Вирусы выходят на новый уровень!!!Если сделать программу по их методу а потом в нее внедрить кусочек вируса уже никто не сможет - понять как работает программа!!!!
Наверное очень весело искать причины сегфолта в таких программах.
Имея двоичный код, можно восстановить последовательность действий, зная последовательность действий можно понять, какой код - мусор.-))
> Имея двоичный код, можно восстановить последовательность действий, зная последовательность
> действий можно понять, какой код - мусор.-))Школоте языком молоть - не мешки ворочать. Ты, для началя, хотя бы "расшифруй" обычный код, скомпилированный с -O3.
Хочу что бы кто-нибудь пояснил что значит "Сама функция не поддаётся анализу и выполняется в зашифрованном виде, без стадии расшифровки." ?
Только просьба без словоблудства, нормально объяснил.
Математическая функция имелось в виду. На вход дают какие-то данные, на выход - она их выдает. Как посчитать то что она выдаст - непонятно.
Поясню что я имею ввиду.У нас есть процессор(+память,кэш и т.д.), некий алгоритм (который якобы выпоняется в зашифрованном виде, черный ящик с входом и выходом). Все хорошо только вот что, процессор не умеет расшифровывать ему нужно сказать чтобы он расшифровал, а значит он это положит в память (кэш) это может быть сделано как угодно последовательно (т.е. по частям), параллельно (т.е. сразу все) ну это будет сделано, поскольку как я уже написал выше у процессора нет встроенного алгоритма шифрования/дешифрования я имею ввиду обычный процессор (MIPS, SPARC, x86 и т.д.).
Либо новость не точно написано, либо они смогли зашифровать так что этот набор битиков и байтиков (посути мусор в общем понимании) ложится в процессорные команды - ну тогда это тянет как минимум на охеренную премию и я снимаю перед ними шляпу, потому что то что было сделано до этого полная херня.
Да забудьте Вы уже про зашифрованный код, это к делу не относится (можно по такому же принципу и код зашифровать, но необязательно). Представьте себе программу из кучи условных ветвлений. А по какой ветке пойдет - зависит как раз от этой самой функции. Ну да, будете знать какие команды процессор выполняет, но какой от этого толк, в каждом конкретном случае - выполнится ветка, которую выберет разработчик по каким-то своим критериям, предсказать или повторить - будет невозможно.
Ветвление это хорошо, вот только это не является шифрованием (я говорю про статью, а там шифрование написано). Ветвление можно отследить, да сложно но можно.
Именно из-за шифрования и приковал мой взгляд эта статья.Была (и есть) одна программка если я не ошибаюсь UltraEDIT32 дак вот в ней шифрованный код поднимался в память и там дешифровывался, но кроме всего там была сумасшедшая система ветвления этого кода. Вообщем креки для нее можно найти в инете т.е. взломали (SoftIce им в помощь).
Не канает ответ.
> Да забудьте Вы уже про зашифрованный код, это к делу не относится
> (можно по такому же принципу и код зашифровать, но необязательно). Представьте
> себе программу из кучи условных ветвлений. А по какой ветке пойдет
> - зависит как раз от этой самой функции. Ну да, будете
> знать какие команды процессор выполняет, но какой от этого толк, в
> каждом конкретном случае - выполнится ветка, которую выберет разработчик по каким-то
> своим критериям, предсказать или повторить - будет невозможно.Да кстати в статье на английском говорится именно про шифрование.
Ответ в теме уже прозвучал. См. "гомоморфное шифрование".
В любом случае, как я это вижу, область применения ограничена. Например, IO-ориентированный код явно в пролете. ?
А для черного ящика (в данном случае - абсолютно черного) без особых требований к производительности - очень неплохо.
При необходимости - можно написать и шифрование (алгоритм работы этой кучи ветвлений и будет алгоритмом дешифровки), только смысла в этом будет немного (у нас задача получить программу, которую невозможно понять, а не расшифрованный кусок понятного кода).
где пример скачать? у меня курсовая по этой теме!
Ну, полный бред. Индусы, они и в Америке индусы. Чуваки видимо тупо хотят денег и разводят на бабки своих индусских олигархов.Элементарное рассуждение: Есть класс функций преобразовывающих пространство А в пространство B. Допустим чувак изобрёл крутую функцию преобразования (алгоритм), которая эффективней других делает это преобразование.
Эти индусы по сути преобразуют эту функцию в другую функцию из этого класса.Дальше три варианта:
1) Сложность полученной функции меньше сложности исходной функции. Это Нобелевка однозначно...
2) Сложность полученной функции больше сложности исходной. Зачем надо было тогда изобретать такой алгоритм, чтобы потом его изнахратить этой хренью?! Смысл в этой функции будет только, если её сложность всё еще будет меньше других известных алгоритмов. Ну, кто следит за этим думаю поняли что я хотел сказать...
3) Сложность осталось той же... Это очень узкий подкласс функций. Собственно оптимизирующие компиляторы сами занимаются подобными преобразованиями, выбрасывая всё лишнее из кода. Тут уже всё придумано до них... Боюсь после качественного оптимизирующего компилятора от их обфуркации останутся рожки да ножки...Развод лохов короче...
Пипец какой-то...
ну, на самом деле свести с ума оптимизатор не так уж сложно: он же не рассчитан на патологически идиотский код. при достаточно большом количестве кусочков пазла он просто поднимет лапки и скажет: «баста, карапузики, дальше без меня.»эффективность выхлопа, правда… ну, пичалечка. но, как известно: «если наша программа у вас тормозит — купите технику помощнее». двойной профит: ещё и стимуляция продаж железа.
а вообще — жаль, что у меня не хватает знаний понять, что они там за фигню выдумали. нутром чую, что фигню, но обосновать не могу.
> ну, на самом деле свести с ума оптимизатор не так уж сложно:
> он же не рассчитан на патологически идиотский код. при достаточно большом
> количестве кусочков пазла он просто поднимет лапки и скажет: «баста, карапузики,
> дальше без меня.»В математике нет понятия "патологически идиотский код". Есть понятие избыточный код. Там могут быть избыточные переходы, избыточные операции, избыточные промежуточные данные. Вот собственно и всё... Оптимизирующий компилятор на алгоритмах - это как архиватор на обычных данных.
Все системы шифрования данных прежде чем шифровать сообщение, сначала его упаковывают, чтобы избавиться от избыточности. Избыточность в сообщении ослабляет стойкость к расшифровке.
С функциями всё сложней, конечно. Но не более того...
> эффективность выхлопа, правда… ну, пичалечка. но, как известно: «если наша
> программа у вас тормозит — купите технику помощнее». двойной профит: ещё
> и стимуляция продаж железа.В этом случае "защищаемый" алгоритм превращается в неуловимого Джо, который в таком виде нафиг никому не нужен. Программист возьмёт пусть чуть менее эффективный алгоритм, но он будет эффективней этого хлама...
Хотел бы я посмотреть как они это всё отлаживать будут в случае, если алгоритм вдруг будет работать неправильно...
>Эти индусы по сути преобразуют эту функцию в другую функцию из этого класса.Во множество функций, как я это понял. Применение которых дает тот же результат, что и исходная. Получение исходной функции - математически трудно выполнимая задача. Т.е. вместо понятного исходного алгоритма получаем кусок макарон.
Вы не поняли. Из алгоритма сортировки пузырьком получить алгоритм быстрой сортировки тоже математически сложная задача, если не сказать больше. Вопрос в том, нужна ли кому-то сортировка пузырьком?
А откуда вы узнаете, что это именно алгоритм быстрой сортировки, перебрав все возможные входные значения? Если он работает на ограниченном наборе как пузырек - это еще не значит, что это именно сортировка.
Я просто привел пример на пальцах... Лично мне всё равно как алгоритм называется, имеет лишь значение, хорошо ли он выполняет свою работу в контексте моей задачи или нет.И даже при этом, мне нужны будут очень веские основания, чтобы использовать в своей работе некий непонятный "зашифорванный" алгоритм, код которого я не могу проверить. Предпочту воспользоваться открытыми алгоритмами, даже если они чуть менее эффективны.